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
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" />
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.
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
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.
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
in my case, it turned out to be IIS express issue. Once i changed debug to Local IIS, error was gone.
Renaming app.config to web.config works for me. Or just make a copy of app.config and call it web.config
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
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.