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

我是asp.net的死亡页面,这是我使用nuget升级webgrease和引导mvc4之后。

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


无法加载文件或程序集“WebGrease”或它的一个依赖项。 强名称签名无法validation。 程序集可能已经被篡改,或者被延迟签名,但没有用正确的私钥完全签名。 (来自HRESULT的exception:0x80131045)描述:执行当前Web请求期间发生未处理的exception。 请查看堆栈跟踪,了解有关错误的更多信息以及源代码的位置。

exception详细信息:System.IO.FileLoadException:无法加载文件或程序集“WebGrease”或它的一个依赖项。 强名称签名无法validation。 程序集可能已经被篡改,或者被延迟签名,但没有用正确的私钥完全签名。 (来自HRESULT的exception:0x80131045)

源错误:

在执行当前Web请求期间生成未处理的exception。 有关exception的来源和位置的信息可以使用下面的exception堆栈跟踪来标识。

程序集加载跟踪:以下信息可以帮助确定程序集“WebGrease”无法加载的原因。


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

使用软件包pipe理器控制台强制卸载软件包

uninstall-package -f WebGrease 

然后使用以下命令安装以前的版本1.3.0

 install-package WebGrease -Version 1.3.0 

打开你的Web.config文件,在运行时标签下replace下面的依赖关系

 <dependentAssembly> <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0-1.3.0.0" newVersion="1.3.0.0" /> 

我不得不在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> ... 

我有同样的错误。 这是因为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" /> 

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

之后,一切正常。

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

试试这个:检查上面的dll是否在GAC中。 如果是这样,在您的自定义应用程序bin文件夹检查是否存在以上的DLL,如果这样从你的引用中删除它们。