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.Security
从2.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,错误消失了。