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

时间:2014-02-27 06:30:04

标签: c# asp.net .net signalr

我正在逐步学习本教程

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异常:0x80131040)

更多信息:

在我的项目解决方案中,引用指向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

9 个答案:

答案 0 :(得分:63)

好的,我已经解决了。

我必须使用此命令将Mic​​rosoft.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" />

答案 1 :(得分:23)

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

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

Microsoft.Owin.Security项目中将2.1.03.0.0升级到MyProj.Data.Entities为我解决了问题。

答案 2 :(得分:7)

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

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

它更简单,这将更新清单本身。

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

答案 3 :(得分:4)

简单, 转到您的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" />

这可行。

答案 4 :(得分:0)

此程序集与请求的内容不匹配,这就是您收到此错误的原因。检查GAC中的Microsoft.Owin.Security版本。另请参阅here

答案 5 :(得分:0)

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

答案 6 :(得分:0)

将app.config重命名为web.config对我有用。或者只是复制app.config并将其命名为web.config

答案 7 :(得分:0)

在我的情况下,我在&#34;更新数据库&#34;期间首先在代码中出现此错误。我把&#34;设置为启动项目&#34;在项目中使用migration.it帮助我

答案 8 :(得分:0)

我通过更改我的Web.config配置标记来修复它:

来自:

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

到此:

<configuration>

不知道为什么会这样。