SignalR 2.0错误:无法加载文件或程序集Microsoft.Owin.Security

我正在按照这个教程一步一步

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

我在下面标记的行上得到一个例外

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

错误信息:

无法加载文件或程序集“Microsoft.Owin.Security,Version = 2.0.1.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”或其某个依赖项。 定位的程序集清单定义与程序集引用不匹配。 (来自HRESULT的exception:0x80131040)

更多信息:

在我的项目解决scheme中,引用指向NuGet的packages文件夹中的dll

这已经被NuGet添加到我的App.config文件中

 <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> 

在packages文件夹中, packages\Microsoft.Owin.Security.2.0.0\lib\net45 ,Microsoft.Owin.Security.dll的文件版本是2.020911.395

好的,我已经解决了。

我不得不使用这个命令将我的Microsoft.Owin.Security包升级到2.1.0

 Install-Package Microsoft.Owin.Security -Version 2.1.0 

并像这样修改我的App.config中的绑定

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

就我而言,我有两个项目:

  • MyProj.MvcWeb (引用Microsoft.Owin.Security 3.0.0的MVC应用程序)
  • MyProj.Data.Entities (引用Microsoft.Owin.Security 2.1.0类库;不知道这是怎么发生的)

MyProj.Data.Entities项目MyProj.Data.Entities Microsoft.Owin.Security2.1.0升级到3.0.0为我解决了这个问题。

我接受了你的想法,感谢你所做的研究,我这样做了:

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

它更简单得多,这将更新自身。

忽略这个( get-project PerfSurf )部分,因为我使用它,因为我有多个testing项目,不想全部更新它们

简单,转到你的web.config文件。 将Microsoft.Owin,Microsoft.Owin.Security.OAuth,Microsoft.Owin.Security.Cookies,Microsoft.Owin.Security的“bindingRedirect”标记更改为如下所示:

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

这可以工作。

这个程序集不符合要求,这就是为什么你得到这个错误。 检查GAC中的Microsoft.Owin.Security版本。 另见这里

将app.config重命名为web.config适用于我。 或者只是制作一个app.config的副本,并将其称为web.config

在我的情况下,我在“更新数据库”中首先出现代码错误。 我把项目中的“设置为启动项目”与migration.it帮助我

我通过更改我的Web.configconfiguration标记来修复它:

由此:

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

对此:

 <configuration> 

不知道为什么这个工程。

在我的情况下,原来是IIS的快递问题。 一旦我将debugging更改为本地IIS,错误消失了。