部署的ASP.NET MVC 3.0仅适用于runAllManagedModulesForAllRequests =“true”

时间:2013-01-24 18:14:21

标签: asp.net-mvc-3

今天我一直在与一个非常奇怪的问题作斗争。我花了几天时间开发一个曾经是ASP.NET 4的ASP.NET MVC3 Web应用程序。现在不是一半MVC3和一半ASP.NET 4都在同一个应用程序下运行。这一切都很好。

今天我们建立了一个全新的临时环境(Server 2008 R2),部署代码并运行应用程序。只有在尝试访问任何MVC页面时才会出现HTTP 404错误,所有aspx页面都能正常工作。为了证明问题是环境问题,我们将相同的代码部署到开发盒上的新应用程序中,这样做顺利。

在花了一整天确保两个环境完全相同(IIS角色服务,Windows更新,已安装的应用程序......所有内容)之后,我在404错误页面上注意到请求的处理程序是“StaticFile”。

经过一段谷歌搜索后,我遇到了标题中的选项

<system.webServer><modules runAllManagedModulesForAllRequests="true"></modules></system.webServer>

这现在有效,所以我假设没有静态路由的模块没有被调用(如果我是天真的话,请原谅我)。

问题是,在我们的开发环境中,web.config没有此属性。

那么为什么没有它在一台服务器上而不在另一台服务器上呢?当然,为所有请求调用所有模块效率较低。

如果有人知道为什么会发生这种情况,我会永远感激,因为虽然我们的临时环境现在有效,但我不想完全了解你。

谢谢你!

1 个答案:

答案 0 :(得分:1)

我要检查的第一件事是确保将以下更新应用于您的全新临时环境,因为它可能已经应用于您现有的开发环境,并且可以解释为什么一个环境正在运行而另一个环境不运行: http://support.microsoft.com/kb/980368

有关静态文件路由,上面的修补程序和一般“无扩展路由如何”的更多信息,我建议您阅读以下文章:http://blogs.msdn.com/b/tmarq/archive/2010/04/01/asp-net-4-0-enables-routing-of-extensionless-urls-without-impacting-static-requests.aspx

相关问题