【问题标题】:SignalR and c# causing a version errorSignalR 和 c# 导致版本错误
【发布时间】:2013-02-16 00:14:00
【问题描述】:

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

有人知道如何解决这个问题吗?

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>
  <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

【问题讨论】:

  • 您的意思是使用 NuGet 吗? >使用 netgu 安装程序
  • 是的,我已更新为正确的拼写。

标签: c# jquery .net signalr


【解决方案1】:

对我来说,听起来问题是您正在使用一些想要依赖特定版本的 Microsoft.Owin.Host.SystemWeb 的程序集:即版本 X,但 Microsoft.Owin.Host.SystemWeb 的版本越来越加载的是版本 Y。默认情况下,CLR 会为此引发错误。

您可以通过确保始终使用一个版本(例如 X)并且所有依赖程序集都引用该版本来解决此问题。

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

或者,您可以尝试通过使用 assembly binding redirect 来强制 CLR 接受不同的程序集版本,该 assembly binding redirect 对 CLR 说“当某些程序集要求版本 X 时加载版本 Y”。即使您尝试这样做,您的应用也只有在程序集公共界面没有更改的情况下才会成功。

(注意 1,我无法从您的问题中看出它在哪里找到 Microsoft.Owin.Host.Systemweb 但由于缺乏更多信息,我会假设它是 app bin 文件夹,它不会影响答案,但是它确实会妨碍调试版本不匹配。)

【讨论】:

    猜你喜欢
    • 2020-01-03
    • 2022-07-11
    • 2021-11-11
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多