2013-02-16 94 views
3

我刚刚安装了SignalR,并得到下面的错误。看起来好像我有一个版本问题,但我不知道在哪里解决它。我已经使用NuGet安装程序安装了SignalR。SignalR和C#导致版本错误

任何人都知道如何解决这个问题?

Could not load file or assembly 'Microsoft.Owin.Host.SystemWeb, Version=0.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.IO.FileLoadException: Could not load file or assembly 'Microsoft.Owin.Host.SystemWeb, Version=0.10.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 

Source Error: 


Line 35:   protected void Session_Start(Object sender, EventArgs e) 
Line 36:   { 
Line 37: RouteTable.Routes.MapHubs(); 
Line 38:   } 
Line 39:  } 

遗漏的类型错误:无法读取属性 '客户' 未定义signalR_test.html的:35个

<!--Script references. --> 
    <script src="../Scripts/jquery-1.9.1.js"></script> 
    <script src="../Scripts/jquery.signalR-1.0.0-rc1.js"></script> 
    <script src="../Scripts/jquery.signalR-1.0.0-rc1.min.js"></script> 
    <!--Reference the autogenerated SignalR hub script. --> 
    <script src="/signalr/hubs"></script> 

    <!--Add script to update the page and send messages.--> 
    <script type="text/javascript"> 
     $(function() { 
      // Declare a proxy to reference the hub. 
      var chat = $.connection.CollaboratorHub; 
      // Create a function that the hub can call to broadcast messages. 
      chat.client.broadcastMessage = function (name, message) { 
       // Html encode display name and message. 

--packages。

<packages> 
    <package id="EntityFramework" version="5.0.0" targetFramework="net45" /> 
    <package id="jQuery" version="1.8.2" targetFramework="net45" /> 
    <package id="jQuery.UI.Combined" version="1.8.11" targetFramework="net45" /> 
    <package id="jQuery.Validation" version="1.9.0.1" targetFramework="net45" /> 
    <package id="knockoutjs" version="2.1.0" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.Mvc" version="4.0.20710.0" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.Providers.Core" version="1.0" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.Providers.LocalDB" version="1.0" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.Razor" version="2.0.20710.0" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.SignalR" version="1.0.0-rc1" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.SignalR.Core" version="1.0.0-rc1" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.SignalR.JS" version="1.0.0-rc1" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.SignalR.Owin" version="1.0.0-rc1" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.SignalR.SystemWeb" version="1.0.0-rc1" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.Web.Optimization" version="1.0.0" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.WebApi" version="4.0.20505.0" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.WebApi.Client" version="4.0.20710.0" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.WebApi.Core" version="4.0.20710.0" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.WebApi.WebHost" version="4.0.20710.0" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.WebPages" version="2.0.20710.0" targetFramework="net45" /> 
    <package id="Microsoft.jQuery.Unobtrusive.Ajax" version="2.0.20505.0" targetFramework="net45" /> 
    <package id="Microsoft.jQuery.Unobtrusive.Validation" version="2.0.20505.0" targetFramework="net45" /> 
    <package id="Microsoft.Net.Http" version="2.0.20710.0" targetFramework="net45" /> 
    <package id="Microsoft.Owin.Host.SystemWeb" version="1.0.0-rc1" targetFramework="net45" /> 
    <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" /> 
    <package id="Modernizr" version="2.6.2" targetFramework="net45" /> 
    <package id="Newtonsoft.Json" version="4.5.9" targetFramework="net45" /> 
    <package id="Owin" version="1.0" targetFramework="net45" /> 
    <package id="WebGrease" version="1.1.0" targetFramework="net45" /> 
</packages> 

凡正在使用:AlumCloud

+0

你的意思是使用NuGet? >使用netgu安装程序 – 2013-02-16 00:16:12

+0

是的,我已更新到正确的拼写。 – 2013-02-16 00:19:12

回答

1

对我来说,这听起来像问题是你使用一些想依靠Microsoft.Owin.Host.SystemWeb特定版本的组件:即版本X,但获取加载的Microsoft.Owin.Host.SystemWeb的版本是Y版本。默认情况下,CLR将引发此错误。

您可以通过确保一致地使用一个版本(例如X)并确保所有相关程序集引用该版本来解决此问题。

您可能需要查看ildasm/reflector中的所有程序集,以确切了解它们尝试加载的版本。

或者,您可以尝试通过使用assembly binding redirect来强制CLR接受不同的程序集版本,该程序对CLR说:“当某个程序集要求版本X时加载版本Y”。即使您尝试此操作,只有在程序集公共接口中没有更改时,您的应用程序才会成功。 (注1,我不能从你的问题中发现它在哪里找到了Microsoft.Owin.Host.Systemweb,但由于缺乏更多信息,我会假设它是应用程序bin文件夹,并且它不会影响答案,但它确实会影响调试版本的不匹配。)