【问题标题】:Deployed ASP.NET MVC 3.0 only works with runAllManagedModulesForAllRequests="true"部署的 ASP.NET MVC 3.0 仅适用于 runAllManagedModulesForAllRequests="true"
【发布时间】:2013-01-24 18:14:20
【问题描述】:

今天我一直在与一个非常奇怪的问题作斗争。我每天都在开发一个曾经是 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 没有这个属性。

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

如果有人对为什么会发生这种情况有任何想法,我将永远感激不尽,因为虽然我们的暂存环境现在可以工作,但我讨厌不知道你的确切情况。

谢谢!

【问题讨论】:

    标签: asp.net-mvc-3


    【解决方案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

    【讨论】:

    • 安装该修补程序可以解决问题,谢谢。然而奇怪的是,我们的开发盒没有安装此修补程序但仍然有效!?
    • 我不知道如何解决这个问题,因为它们不是完全重复的环境,它可能是一个小的 IIS 版本差异,一些其他 Windows 更新组件等。在不知道确切的设置的情况下,它是很难说。很高兴这对你有用!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-31
    • 1970-01-01
    • 2012-06-18
    • 2012-09-11
    相关资源
    最近更新 更多