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

use*_*611 6 c# .net-assembly visual-studio

我将代码部署到ST服务器时出现以下错误.相同的代码在我的机器和开发服务器上工作正常,但是当我们尝试访问应用程序中的一个页面时,在ST服务器上通过此错误.

错误是:

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

异常详细信息:System.IO.FileLoadException:无法加载文件或程序集"Microsoft.Owin,Version = 2.1.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35"或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(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>
Run Code Online (Sandbox Code Playgroud)

Hp9*_*p93 6

添加 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>
Run Code Online (Sandbox Code Playgroud)


Aks*_*hra 6

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

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


小智 2

由于它在本地计算机上运行良好,因此有几种可能的情况,首先检查 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>
Run Code Online (Sandbox Code Playgroud)

包装你的依赖元素

如果之后您仍然没有成功找到原因,您可以尝试使用 Visual Studio 附带的工具 fuslogvw.exe 来获取有关绑定失败的更多信息。