4

我遇到运行 ASP.NET MVC4 时出现运行时错误的情况。我最近从 MVC3 迁移到 MVC4。

启动调试器后,我立即遇到以下错误消息:

“System.Web.Mvc.WebViewPage”类型存在于“c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\promotionweb\20a5681f\9ce59023\assembly\dl3\29f671cf\37f0bcf2_4619d001\ System.Web.Mvc.DLL' 和 'c:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Web.Mvc\v4.0_4.0.0.0__31bf3856ad364e35\System.Web.Mvc.dll'

我在 IIS 7.5 中运行,具有 MVC 项目本身的解决方案设置、另一个 C# 库和控制台应用程序项目。

我已经尝试了这个答案中提到的所有步骤,都来自一个类似的问题。但是在我的情况下它根本没有帮助。

我对它必须对不同的编译模型产生一些疑问,因此我尝试为 x86 和 AnyCPU 进行编译,并在中间清理上面提到的所有目录。似乎没有任何帮助。

任何想法可能会导致 GAC 和我的临时 ASP.NET 文件之间的这种干扰?

4

2 回答 2

2

下面是一个相当大的故事,但我认为它可能对其他人有益。

首先,我在 Visual Studio 2013 中打开了我的项目,并收到了投诉。我从 VS2013 内部(找不到)链接到 Microsoft 站点,该站点解释了如何手动将 MVC3 升级到 MVC4 项目。我遵循的步骤需要手动更改 web.config。

我所做的更改之一是修改System.Web.Mvc参考的版本号。以前是 3.0.0.0,根据指南 4.0.0.0 是要更改的数字。另一个步骤是进入 NuGet 包管理器,搜索 ASP.NET MVC4 并安装它。本次下载的版本为 4.0.0。1System.Web.Mvc,因为我认为这是编写指南时的正确版本。

完成后,我编译了项目并进入了我发布的问题中运行时错误的永无止境的循环。我的项目是针对 4.0.0 版本编译的。1根据 Windows 更新,这似乎是正确的版本号)。编译是正确的,但我的web.config:

<add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

该应用程序是针对 4.0.0 编译的。1,但正在运行并搜索 4.0.0. 0并在这两个地方找到它:

c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET 
c:\Windows\Microsoft.NET\assembly\GAC_MSIL

然后是错误。我仍然认为这部分很奇怪。

我的解决方案是修改 web.config,如前所述更改程序集参考版本,并将绑定重定向为System.Web.Mvc.

其他一些来源:

于 2015-01-16T14:42:17.200 回答
1

我曾经有过这个错误。我注意到项目中的引用和 web.config 中的 add assembly-tag 相同是很重要的。我所做的是删除对与 web.config 中不同的程序集的引用,然后添加具有正确版本的引用。我想你也可以反过来做。

于 2017-11-12T10:58:11.543 回答