我遇到运行ASP.NET MVC4时出现运行时错误的情况。我最近从MVC3迁移到了MVC4。
启动调试器后,我立即面对此错误消息:
类型' System.Web.Mvc.WebViewPage'存在于两者中 ' c:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET 文件\ promotionweb \ 20a5681f \ 9ce59023 \组件\ DL3 \ 29f671cf \ 37f0bcf2_4619d001 \ System.Web.Mvc.dll程序' 和 ' C:\ WINDOWS \ Microsoft.NET \组件\ GAC_MSIL \ System.Web.Mvc \ v4.0_4.0.0.0__31bf3856ad364e35 \ System.Web.Mvc.dll程序'
我在IIS 7.5中运行,使用MVC项目本身的解决方案设置,另一个C#库以及一个控制台应用程序项目。
我已经尝试all steps mentioned in this answer, descended from a similar question了。但是在我的情况下它根本没有用。
我对不同的编辑模型有一些疑问,所以我试过compiling for x86 and AnyCPU,清理上面提到的所有目录。似乎没有任何帮助。
任何可能导致GAC与我的临时ASP.NET文件之间发生干扰的想法?
答案 0 :(得分: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。{strong> 1 的System.Web.Mvc
,因为我认为这是指南编写时的正确版本。
完成后,我编译了项目,并在我发布的问题中进入了永不停止的运行时错误循环。我的项目是针对4.0.0版编译的。 1 (which seems to be the correct version number according to a windows update)。编译是正确的,但我在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
的绑定重定向。
其他一些消息来源:
答案 1 :(得分:1)
我曾经遇到过这个错误。我注意到项目中的引用和web.config中的add assembly-tag是相同的很重要。我所做的是删除与web.config中不同的程序集的引用,然后添加具有正确版本的引用。我想你也可以反过来做。