我已经查看了类似的帖子,但没有找到帮助解决此问题的帖子。
简单地说,我有一个在azure上运行的mvc3项目。几天前由于某种原因,它失去了对System.Web.MVC的引用。所以我添加了引用并将Copy Local属性更改为True。 它在本地模拟器上构建并运行ok。然后我发布了它,并在访问该网站时收到以下消息。
“无法加载文件或程序集'System.Web.Mvc,Version = 3.0.0.0”
事实证明我只有3.0.0.1版本,而不是3.0.c.0,这在我的web.congig文件中有说明。我已经尝试将程序集和运行时部分中的web.config中的值更改为3.0.0.1但是这会在azure中引发另一个异常。(虽然没有更改公共令牌)
我也尝试过添加可部署的依赖项,但这没有任何区别,我尝试下载并将3.0.0.0版本添加到项目中,但是vs在发布时不喜欢这个dll。
我也尝试将程序集的属性Specificc Version更改为False,但这没有用。
所以出于某种原因我不再使用v3.0.0.0但是我不知道如何更改我的项目以使用v3.0.0.1。
>应用程序中的服务器错误。配置错误 描述:处理为此请求提供服务所需的配置文件时发生错误。请查看下面的具体错误详细信息并相应地修改配置文件。
分析程序错误消息:无法加载文件或程序集“System.Web.Mvc,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)
来源错误: 第39行: 第40行: 第41行: 第42行: 第43行:
源文件:E:\ sitesroot \ 0 \ web.config行:41
程序集加载跟踪:以下信息有助于确定无法加载程序集“System.Web.Mvc,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”的原因。 警告:装配绑定日志记录已关闭。 要启用程序集绑定失败日志记录,请将注册表值[HKLM \ Software \ Microsoft \ Fusion!EnableLog](DWORD)设置为1。 注意:程序集绑定失败日志记录会导致一些性能损失。 要关闭此功能,请删除注册表值[HKLM \ Software \ Microsoft \ Fusion!EnableLog]。
答案 0 :(得分:4)
谢谢你的家伙。我实际上只是注释了mvc汇编的汇编代码行,并更改了运行时绑定代码以在web.config中查找v 3.0.0.1并且这已经完成了。我不确定这是否是最好的解决方案,但是花了一天时间就是一个很重要的因素。
答案 1 :(得分:1)
答案 2 :(得分:1)
我已经随机打开和关闭了这个问题一段时间,我现在知道原因了。
当您更新nuget包并且包具有web.config
文件作为nuget包的一部分时,它会将nuget包中的web.config
文件的内容与您的配置文件合并。 nuget包是我构建的私有包,并没有意识到这一点。
包中的web.config
文件包含MVC的binging重定向,这导致我的配置文件突然出现重复的条目。我最初错过了它,因为它在一行上完成了所有绑定重定向。
删除任何重复的绑定重定向后,它会解决问题。这个问题对我找出导致这种情况的原因很有启发。