2014-01-29 41 views
29

我试图让SignalR在个人账户的MVC5项目中工作。SignalR 2.0.2和Owin 2.0.0依赖冲突

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

因此,我使用NuGet获取所有SignalR包,它会自动解决依赖关系并下载v 2.0.2。

该项目在启动时引发错误并显示以下消息:

无法加载文件或程序集 'Microsoft.Owin,版本= 2.0.1.0,文化=中性公钥= 31bf3856ad364e35'

我也尝试将Owin升级到2.1.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> 

或者您可以更新此引用CES到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> 
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> 
+0

问题在于Owin和Owin.Security的版本2.0.2.0由于某种原因无法添加,因此PM不会允许这样做。 但是我能够通过将Owin和Owin.Security升级到2.1.0.0来获得解决方案。 – neo112

+1

对我无效,但异常消息已更改:无法加载文件或程序集“Microsoft.Owin”或其某个依赖项。定位的程序集清单定义与程序集引用不匹配。 (从HRESULT异常:0x80131040) –

1

在我来说,当我主持有SignalR我的WCF服务功能在IIS中,当我去我的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中运行。

+1

为我工作,虽然不使用WCF。困惑为什么你安装然后卸载。我认为这是一个错字,但意识到它不在内部开始。 – Chris

+0

克里斯...我很抱歉,这是错字...感谢您指出... – Ziggler