无法在服务器

时间:2016-07-28 20:06:00

标签: c# visual-studio .net-assembly

将代码部署到ST服务器时出现以下错误。相同的代码在我的机器和Dev服务器上工作正常,但是当我们尝试访问应用程序中的一个页面时,在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>

3 个答案:

答案 0 :(得分:6)

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

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

                                                              

答案 1 :(得分:3)

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

答案 2 :(得分:2)

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

然后检查dev和ST机器上的GAC(如果你在开发人员的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以获取有关绑定失败的更多信息。