SignalR 2.0 error: Could not load file or assembly Microsoft.Owin.Security
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
Solution 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" />
Solution 2:
In my case, I had two projects:
-
MyProj.MvcWeb
(an MVC application that referencedMicrosoft.Owin.Security 3.0.0
) -
MyProj.Data.Entities
(a class library that referencedMicrosoft.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.
Solution 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
Solution 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.