从nuget升级到webgrease 1.5.1.25624后,System.IO.FileLoadException即将到来

时间:2013-07-16 07:36:27

标签: asp.net-mvc-4 webgrease

我是asp.net死亡页面,这是在我使用nuget为mvc4升级webgrease和bootstrap之后。

  应用程序中的服务器错误。

     
     

无法加载文件或程序集“WebGrease”或其中一个   依赖。强名称签名无法验证。该   装配可能已经被篡改,或者是延迟签署但没有   使用正确的私钥完全签名。 (HRESULT的例外情况:   0x80131045)描述:期间发生了未处理的异常   执行当前的Web请求。请查看堆栈跟踪   有关错误及其来源的更多信息   码。

     

异常详细信息:System.IO.FileLoadException:无法加载文件   或汇编'WebGrease'或其依赖项之一。强名   签名无法验证。该组件可能已被篡改   与,或它是延迟签署但没有完全签署正确   私钥。 (HRESULT异常:0x80131045)

     

来源错误:

     

执行期间生成了未处理的异常   当前的网络请求。有关的来源和位置的信息   可以使用下面的异常堆栈跟踪来识别异常。

     

装配加载跟踪:以下信息可能对您有所帮助   确定无法加载程序集“WebGrease”的原因。

     
     

版本信息:Microsoft .NET Framework版本:4.0.30319;   ASP.NET版本:4.0.30319.18045

5 个答案:

答案 0 :(得分:36)

使用程序包管理器控制台强制卸载程序包

uninstall-package -f WebGrease

然后使用以下命令

安装以前的版本1.3.0
install-package WebGrease -Version 1.3.0

打开您的Web.config文件,并在运行时标记

下替换下面的依赖项
<dependentAssembly>
    <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-1.3.0.0" newVersion="1.3.0.0" />

答案 1 :(得分:8)

我必须在web.config中添加以下代码:

    <runtime>
      <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
          <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
          <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
        </dependentAssembly>
...

答案 2 :(得分:5)

我有同样的错误。之所以发生这种情况是因为nuget更新了WebGrease dll但没有更新web.config文件(特别是使用过的dll版本)。

所以我在web.config中更改了下一行:

 <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />

<bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930" />

我从dll属性获取的版本号(1.6.5135.21930)。

在此之后一切正常。

答案 3 :(得分:3)

我们知道程序集强名称签名中存在错误,因此我们正在积极努力尽快发布更新版本。目前,我们已经从nuget.org上取消了WebGrease 1.5.1软件包的列表。

答案 4 :(得分:0)

试试这个:检查上面的dll是否在GAC中。如果是这样,请在您的自定义应用bin文件夹中检查上面的dll是否存在,如果是,请将其从参考中移除。