无法加载服务器上的文件或程序集错误

本文关键字:文件 程序集 错误 加载 服务器 | 更新日期: 2023-09-27 17:59:10

当我将代码部署到ST服务器时,收到以下错误。同样的代码在我的机器和Dev服务器上运行良好,但当我们试图访问应用程序中的某个页面时,ST服务器上出现了此错误。

错误为:

无法加载文件或程序集"Microsoft.Owin,Version=2.1.0.0,Culture=neutral,PublicKeyToken=31bf3856a364e35"或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(HRESULT中出现异常:0x80131040)描述:在执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误以及错误在代码中的来源的更多信息。

异常详细信息:System.IO.FileLoadException:无法加载文件或程序集"Microsoft.Owin,Version=2.1.0.0,Culture=neutral,PublicKeyToken=31bf3856a364e35"或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(HRESULT异常:0x80131040)

以下是我在web.config中的内容

<dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>

无法加载服务器上的文件或程序集错误

通过在web.confg文件中添加以下引用来修复

  1. Microsoft.Owin
  2. Microsoft.Owin.Security.Auth
  3. Microsoft.Owin.Security
  4. Microsoft.Owin.Security.Cookies

添加SignalR后,我没有更新服务器上的web.config文件。以下是缺少的内容:

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0" />
    </dependentAssembly>
    <dependentAssembly>
      <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>

由于它在本地机器上运行良好,因此有几种可能的情况,首先检查Microsoft.Owin引用,因为在生产环境中缺少它。https://www.nuget.org/packages/Microsoft.Owin/2.1.0您可以在"依赖项"部分进行检查,确保Owin库存在并引用

然后在dev和ST机器上检查GAC(如果你在dev上有GAC中所需的程序集版本,但在ST上没有,它在dev中可以正常工作)

对于重定向,请确保您有正确的xml命名空间

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
         <dependentAssembly>
            <assemblyIdentity name="myAssembly"
                              publicKeyToken="32ab4ba45e0a69a1"
                              culture="neutral" />
            <bindingRedirect oldVersion="1.0.0.0"
                             newVersion="2.0.0.0"/>
         </dependentAssembly>
</assemblyBinding>

包装您的从属元素

如果在那之后你仍然找不到可以尝试该工具的原因Visual Studio附带的fuslogvw.exe,以获取有关绑定失败的详细信息。