【发布时间】:2011-07-03 22:09:32
【问题描述】:
我正在尝试将 ASP.NET MVC 3 应用程序部署到 Windows 2008 x64 服务器(显然运行 IIS 7.0),而 IIS 似乎不想正确地提供内容。所有请求都导致 404.0 错误,因为请求与任何处理程序都不匹配,并且 IIS 正在尝试使用 StaticFile 处理程序来提供请求。该问题似乎与 .NET 4.0 有关,因为我有一个 MVC 2 应用程序在为 .NET 2.0 运行时配置的应用程序池中运行良好。
在 Windows 7 和 Windows Server 2008 R2 上将相同的应用程序部署到 IIS 7.5 服务器时我没有遇到任何问题。
在部署之前,2008 服务器没有安装 .NET 4.0 或 ASP.NET MVC 3,所以这是我在部署应用程序之前采取的步骤:
- 已安装 .NET 4.0
- 运行 aspnet_regiis.exe(来自 Framework64/v4.0.30319 文件夹)
- 使用 Web 平台安装程序安装了 ASP.NET MVC 3
- 应用了 MS 更新 KB980368 以使某些 IIS 7.0 或 IIS 7.5 处理程序能够处理 URL 不以句点结尾的请求
对应用程序中的静态资源(JavaScript 文件、图像等)的请求顺利通过,但对 MVC 操作的任何请求都会失败并出现 404.0 错误。我注意到 IIS 正在使用 StaticFile 处理程序来处理这些请求,这显然是不正确的。据我所知,ASP.NET 4.0 处理程序(即 ExtensionlessUrl-ISAPI-4.0* 处理程序)已正确定义,因此我不知道为什么/如何处理这些处理程序之一的请求,并且会落在所有一直到 StaticFile 处理程序。
我还遇到了以下MS knowledge base article,其中提到您应该确保在遇到 404 错误的服务器上启用/安装了 HTTP 重定向和静态内容压缩。我检查了一下,我的服务器已经启用了这两个功能。我什至尝试删除并重新安装这些功能都无济于事。
在这一点上,我完全不知道为什么它不能正常工作。我已经能够在 2 个不同的 IIS 7.0 服务器上复制该问题。我错过了什么?
【问题讨论】:
-
首先:看看事件查看器,你可以节省时间找到合适的解决方案。
-
@Dario:在任何 Windows 日志中都没有与此问题相关的注意事项。工作进程没有抛出任何异常,并且在 4.0 运行时之上正常运行。 ASP.NET 也不会抛出任何异常,因为它永远不会被 IIS 调用,因为 IIS 正在尝试使用 StaticFile 处理程序来处理请求。
-
作为记录,我所需要的只是应用修补程序(第 4 条)。
标签: iis-7 .net-4.0 asp.net-mvc-3 windows-server-2008 asp.net-4.0