2

今天我一直在与一个非常奇怪的问题作斗争。我每天都在开发一个 ASP.NET MVC3 Web 应用程序,它曾经是 ASP.NET 4。它现在不是一半 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 没有这个属性。

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

如果有人对为什么会发生这种情况有任何想法,我将永远感激不尽,因为尽管我们的登台环境现在可以工作,但我讨厌不完全了解您。

谢谢你!

4

1 回答 1

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

于 2013-01-24T19:15:08.833 回答