【发布时间】:2014-12-13 00:53:55
【问题描述】:
我昨天运行了 Windows 更新,当我尝试发布我的 ASP.NET MVC 4 项目的新版本时,它引入了一些问题。
应用程序在本地编译和运行正常,但是当我将版本推送到我的网络服务器上的测试站点时,它因错误消息而崩溃:
System.Web.HttpCompileException: (0): error CS1705: Assembly 'App_Code, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' uses 'System.Web.Mvc, Version=4.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35' which has a higher version than referenced assembly 'System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'
经过一些研究,我发现这是由于从 4.0.0.0 更新到 4.0.0.1。我从我的项目中删除了 System.Web.Mvc dll 并读取了具有更高版本的 dll。同样,一切都在本地工作,但不在网络上。然后,我浏览了 web.config 并将任何提及 4.0.0.0 的内容更改为 4.0.0.1。同样,这继续在内部工作,但在外部失败。错误信息是:
无法加载文件或程序集“System.Web.Mvc,Version=3.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (来自 HRESULT 的异常:0x80131040) 说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。 异常详细信息:System.IO.FileLoadException:无法加载文件或程序集“System.Web.Mvc,Version=3.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (来自 HRESULT 的异常:0x80131040) 源错误: 在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。 程序集加载跟踪:以下信息有助于确定为什么无法加载程序集“System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”。 警告:程序集绑定日志记录已关闭。 要启用程序集绑定失败日志记录,请将注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) 设置为 1。 注意:有一些与程序集绑定失败日志相关的性能损失。 要关闭此功能,请删除注册表值 [HKLM\Software\Microsoft\Fusion!EnableLog]。我相信这与我用于错误处理的 Elmah 有关。
我尝试按照此处的建议从 Nuget 重新安装:Windows update caused MVC3 and MVC4 stop working,但这没有奏效,我遇到了同样的错误。
添加信息: 服务器尚未更新,我担心更新它可能会破坏现有的实时版本。
【问题讨论】: