Jus*_*zer 32 iis-7 .net-4.0 windows-server-2008 asp.net-4.0 asp.net-mvc-3
我正在尝试将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,因此以下是我在部署应用程序之前执行的步骤:
对应用程序中的静态资源(JavaScript文件,图像等)的请求顺利通过,但对MVC操作的任何请求都会因404.0错误而失败.我注意到IIS正在使用StaticFile处理程序来处理这些请求,这显然是不正确的.据我所知,ASP.NET 4.0处理程序(即ExtensionlessUrl-ISAPI-4.0*处理程序)已正确定义,因此我不知道为什么/如何处理这些处理程序不会处理请求并且将落在所有处理程序中一直到StaticFile处理程序.
我还遇到了以下MS知识库文章,其中提到您应确保在遇到404错误的服务器上启用/安装HTTP重定向和静态内容压缩.我检查了,我的服务器已经启用了这两个功能.我甚至尝试删除并重新安装功能无济于事.
在这一点上,我完全没有想到为什么这不能正常工作.我能够在2个不同的IIS 7.0服务器上复制该问题.我错过了什么?
Mic*_*ell 36
你实际上只是提醒我,我需要在这里的环境中解决这个问题.如果您的情况与我的相同,那么这是一个简单的修复.
只需将以下内容添加到您的Web配置中:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
Run Code Online (Sandbox Code Playgroud)
编辑:提供有关手头问题的进一步说明.在我的情况下发生的事情是当我添加自定义路由映射时,IIS将请求视为文件夹/静态文件请求,因此正在跳过ASP.NET工作进程.这在开发环境下的行为通常不同,因为它在开发Web服务器下运行,该服务器也将通过.net进程传递所有请求.
此Web Config条目告诉IIS,即使IIS将其确定为静态文件或文件夹,您也应该在每个Web请求上运行模块.
问题最终是我的代码完全依赖于仅在 IIS 7.5 中可用的自动启动功能。我能够在 IIS 中的失败请求跟踪功能的帮助下发现该问题,现在我修改了 global.asax.cs 文件,以便应用程序能够正确初始化,无论其加载方式/时间如何。
| 归档时间: |
|
| 查看次数: |
31217 次 |
| 最近记录: |