从ASP.NET MVC 3升级到ASP.NET MVC 4导致404错误

从ASP.NET MVC 3升级到ASP.NET MVC 4导致404错误

问题描述:

我刚刚使用.NET 4.5将ASP.NET MVC 3升级到ASP.NET MVC 4,并且根控制器正在工作,但MVC区域中的控制器开始给予404错误。从ASP.NET MVC 3升级到ASP.NET MVC 4导致404错误

我查找了IIS 7 QFE补丁,但它不适用于Windows 8.通过设置断点,我可以看到该区域已成功注册,并且在完成注册后,我看到4个路由注册在路由集合中,并且首先一个是与区域对应的路线。但任何区域网址的请求只是404错误。

我在升级期间面临问题的每个人都离开这个答案。

我有一个商业逻辑库(不同的.NET类库),这是对ASP.NET MVC编3.

如果您使用的是在编译针对ASP.NET MVC 3至其他库的任何引用ASP.NET MVC 4项目,然后Web服务器不会引发任何错误,但它不能加载依赖于外部库的控制器,而不是显示加载错误,它只是抛出404错误,因为它假定控制器是未找到。

定义在相同区域的控制器如果不依赖于针对MVC3编译的外部库,则运行良好。

总之“任何控制器,取决于编译MVC3的任何库的类型都不会加载,并且会引发404错误”。

理想情况下,它应该提出一个错误。

+0

其实这是有道理的。当你作为一个MVC4应用程序运行时,注册区域将导致它在命名和类型继承中寻找特定的约定,并且就它而言,你的外部项目中没有任何类从继承MVC4类它正在寻找,所以它假定程序集没有一个区域,没有注册任何路线,并给你一个标准的404消息。 – 2013-03-19 16:17:01

+0

我的领域不在外部项目中,我的领域是在相同的MVC4 Web应用程序中,问题是只有一些控制器派生自外部项目中定义的某些类型,而这些类型是针对MVC3编译的,并未奏效。同一地区的其他控制器确实能正常工作。 – 2013-03-19 16:55:34