junta
junta

Reputation: 201

OWinStartup, OWinStartupAttribute not found & 'Owin.IAppBuilder' does not contain a definition for 'Map'

After upgrading my asp.net webform website from Owin 2.1.0 to Owin 3.0.1, I have the fore-mentionned compilation errors... I'm trying to use also SignalR 2 and CORS. Here's my packages.config:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="jQuery" version="2.1.3" targetFramework="net45" />
  <package id="Microsoft.AspNet.Cors" version="5.2.3" targetFramework="net45" />
  <package id="Microsoft.AspNet.SignalR" version="2.2.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.SignalR.Core" version="2.2.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.SignalR.JS" version="2.2.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.SignalR.SystemWeb" version="2.2.0" targetFramework="net45" />
  <package id="Microsoft.Owin" version="3.0.1" targetFramework="net45" />
  <package id="Microsoft.Owin.Cors" version="3.0.1" targetFramework="net45" />
  <package id="Microsoft.Owin.Host.SystemWeb" version="3.0.1" targetFramework="net45" />
  <package id="Microsoft.Owin.Security" version="3.0.1" targetFramework="net45" />
  <package id="Newtonsoft.Json" version="6.0.8" targetFramework="net45" />
  <package id="Owin" version="1.0" targetFramework="net45" />
</packages>

My OwinStartup class is defined in web.config in appsettings as follow:

<add key="owin:AppStartup" value="SignalRStartup, App_Code" />

And this is what the class look like:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Owin;
using Microsoft.Owin;
using Microsoft.AspNet.SignalR;
using Microsoft.Owin.Cors;
using System.IO;

[assembly: OwinStartup(typeof(SignalRStartup))]
public class SignalRStartup
{
    public void Configuration(IAppBuilder app)
    {

        // Enable detailed errors (remember to remove it
        var hubConfiguration = new HubConfiguration();
        hubConfiguration.EnableDetailedErrors = true;
        //hubConfiguration.EnableCrossDomain = true;
        app.UseCors(CorsOptions.AllowAll);
        app.MapSignalR(hubConfiguration);
    }
}

Also note that I cannot use app.Map("/signalr", map => { ... });...

EDIT: I have found in my web.config those lines, that I didn't have before upgrading:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.1.0.0" newVersion="3.0.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Cors" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

I'm about to give up, please if you have any idea...

Upvotes: 4

Views: 7780

Answers (1)

junta
junta

Reputation: 201

Yay ! Found it ! Many Great Thanks to this post: The type or namespace IAppBuilder could not be found(missing using a directive pr an assembly reference).

My problem was resolved by reinstalling Microsoft.owin like Иво Недев suggested:

PM> Update-Package Microsoft.Owin -Reinstall
Removing 'Microsoft.Owin 3.0.1' from ww.
Value does not fall within the expected range.
Successfully removed 'Microsoft.Owin 3.0.1' from ww.
Removing 'Owin 1.0' from ww.
Successfully removed 'Owin 1.0' from ww.
Uninstalling 'Microsoft.Owin 3.0.1'.
Successfully uninstalled 'Microsoft.Owin 3.0.1'.
Uninstalling 'Owin 1.0'.
Successfully uninstalled 'Owin 1.0'.
Attempting to resolve dependency 'Owin (≥ 1.0)'.
Installing 'Owin 1.0'.
Successfully installed 'Owin 1.0'.
Installing 'Microsoft.Owin 3.0.1'.
You are downloading Microsoft.Owin from Microsoft, the license agreement to which is available at http://www.microsoft.com/web/webpi/eula/net_library_eula_enu.htm. Check the package for additional dependencies, which may come with their own license agreement(s). Your use of the package and dependencies constitutes your acceptance of their license agreements. If you do not accept the license agreement(s), then delete the relevant components from your device.
Successfully installed 'Microsoft.Owin 3.0.1'.
Adding 'Owin 1.0' to ww.
Successfully added 'Owin 1.0' to ww.
Adding 'Microsoft.Owin 3.0.1' to ww.
Successfully added 'Microsoft.Owin 3.0.1' to ww.

My head can stop bleeding now :-P

Upvotes: 11

Related Questions