SignalR 2.0 error: Could not load file or assembly

2019-02-07 15:55发布

问题:

I'm following this tutorial step by step

http://www.asp.net/signalr/overview/signalr-20/getting-started-with-signalr-20/tutorial-signalr-20-self-host

And I'm getting an exception on the line marked below

        string url = "http://localhost:8080";
        using (WebApp.Start(url)) //<------ error on this line
        {
            Console.WriteLine("Server running on {0}", url);
            Console.ReadLine();
        }

Error message:

Could not load file or assembly 'Microsoft.Owin.Security, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

More info:

In my project solution, the reference is pointing to the dll in the packages folder from NuGet

This has been added in my App.config file by NuGet

<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="2.1.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
  </dependentAssembly>
</assemblyBinding>

In the packages folder, packages\Microsoft.Owin.Security.2.0.0\lib\net45, the file version of Microsoft.Owin.Security.dll is 2.020911.395

回答1:

Ok I've solved it.

I had to upgrade my Microsoft.Owin.Security package to 2.1.0 with this command

Install-Package Microsoft.Owin.Security -Version 2.1.0

And modify the bindings in my App.config like this

<assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.1.0.0" newVersion="2.1.0.0" />


回答2:

In my case, I had two projects:

  • MyProj.MvcWeb (an MVC application that referenced Microsoft.Owin.Security 3.0.0)
  • MyProj.Data.Entities (a class library that referenced Microsoft.Owin.Security 2.1.0; not sure how this happened)

Upgrading Microsoft.Owin.Security from 2.1.0 to 3.0.0 in the MyProj.Data.Entities project fixed the issue for me.



回答3:

I took your idea, thanks for the research you did, and I did it like this:

get-project PerfSurf | Update-Package Microsoft.Owin.Security

It's much more simpler, and this will update manifest itself.

Ignore this (get-project PerfSurf) part, as I use it because I have multiple test project and don't want to update them all



回答4:

Simple, Go to your web.config file. Change the "bindingRedirect" tag for Microsoft.Owin, Microsoft.Owin.Security.OAuth, Microsoft.Owin.Security.Cookies, Microsoft.Owin.Security to as follows:

<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.1.0" />

this could work.



回答5:

This assembly does not match what was requested that is why you get this error. check the Microsoft.Owin.Security version in the GAC. Also see here



回答6:

in my case, it turned out to be IIS express issue. Once i changed debug to Local IIS, error was gone.



回答7:

Renaming app.config to web.config works for me. Or just make a copy of app.config and call it web.config



回答8:

In my case, I have this error in code first during "update database". I put "Set a as startUp a Project" in project with migration.it helped me



回答9:

I fixed it by changing my Web.config configuration tag:

from this:

<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">

to this:

<configuration>

dont know why this works.