SignalR 2.0.2和Owin 2.0.0依赖冲突

时间:2014-01-29 18:40:11

标签: c# asp.net .net signalr owin

我试图让SignalR在个人账户的MVC5项目中工作。

MVC项目默认为Owin 2.0.0,所有Owin。*组件也是2.0.0。

所以我使用NuGet获取所有SignalR包,它自动解决了依赖性并下载了v 2.0.2。

项目在启动时抛出错误,并显示以下消息:

  

无法加载文件或程序集' Microsoft.Owin,Version = 2.0.1.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'

我也尝试将Owin升级到2.1.0,但这也没有帮助。

有没有人遇到同样的问题,解决方案是什么?

3 个答案:

答案 0 :(得分:49)

您可以将此引用更新为我找到的最新版本(现在是2.1.0):

Install-Package Microsoft.Owin -Version 2.1.0
Install-Package Microsoft.Owin.Security -Version 2.1.0

并确保您的Web.config具有版本2.1.0的这些绑定重定向:

<configuration>
  <runtime>
    <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.1.0.0" newVersion="2.1.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

或者您可以更新此版本2.0.1的引用:

Install-Package Microsoft.Owin -Version 2.0.1
Install-Package Microsoft.Owin.Security -Version 2.0.1

并确保您的Web.config具有版本2.0.1的这些绑定重定向:

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.0.1.0" newVersion="2.0.1.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.0.1.0" newVersion="2.0.1.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

答案 1 :(得分:3)

也许您需要在.config

中进行绑定重定向
<configuration>
<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-2.0.2.0" newVersion="2.0.2.0" />
        </dependentAssembly>
        <dependentAssembly>
            <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-2.0.2.0" newVersion="2.0.2.0" />
        </dependentAssembly>
    </assemblyBinding>
</runtime>
</configuration>

答案 2 :(得分:1)

在我的情况下,当我在IIS中托管具有SignalR功能的WCF服务时,当我转到我的IIS管理器和我托管服务的应用程序时,右键单击svc文件并单击Browse ,我收到了这个错误。所以我做了以下

在我的Visual Studio中,Tools -> Library Package Manager -> Package Manager Console

我确保选择了托管我的WCF服务的网站项目,然后一个接一个地给出了以下两个命令

uninstall-package Microsoft.AspNet.SignalR

install-package Microsoft.AspNet.SignalR

在此之后我只是重新构建我的解决方案。去了IIS经理和我托管服务的应用程序,右键单击svc文件,然后点击Browse,我就能看到我的服务在IE中运行。