IIS 7未提供默认文档

Aar*_*sen 19 iis-7.5

我们在某些开发人员工作站上遇到问题:访问没有文件名的URL(例如http:// localhost /)时,IIS 7会返回404错误.每个人都在运行Windows 7/IIS 7.5和ASP.NET 4.0.应用程序池配置为使用经典管道模式.

默认文档已启用,default.aspx位于默认文档列表中.

我启用了失败的请求跟踪,并在日志中看到:

OldHandlerName="", NewHandlerName="ExtensionlessUrl-ISAPI-4.0_64bit", 
  NewHandlerModules="IsapiModule", 
  NewHandlerScriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll", NewHandlerType=""
Run Code Online (Sandbox Code Playgroud)

后来,我看到这个IsapiModule拒绝了这个请求:

ModuleName="IsapiModule", Notification="EXECUTE_REQUEST_HANDLER", HttpStatus="404",
  HttpReason="Not Found", HttpSubStatus="0", 
  ErrorCode="The operation completed successfully. (0x0)", ConfigExceptionInfo="" 
Run Code Online (Sandbox Code Playgroud)

看起来IIS认为ExtensionlessUrl-ISAPI-4.0-64bit应该处理请求.当我查看该模块的配置时,它表明它应该匹配路径*.,所以我很困惑为什么它匹配没有路径.

谷歌搜索从2005 年开始在IIS.net论坛上发布这篇文章.不幸的是,没有提供解决方案,只是对问题的确认.

当我更新我的应用程序池以使用集成模式时,问题就消失了. 不幸的是,它必须以经典模式运行.

如何让IIS再次为我们的默认文档服务呢?

Aar*_*sen 22

看起来Microsoft发布了一个更新,使ExtensionlessURL HTTP处理程序能够使用无扩展URL.不幸的是,这打破了某些其他处理程序.在我的例子中,经典应用程序池下的DefaultDocument处理程序.解决方案是在我们的应用程序的web.config中删除ExtensionlessURL处理程序:

<system.webServer>
  <handlers>
    <remove name="ExtensionlessUrl-ISAPI-4.0_32bit" />
    <remove name="ExtensionlessUrl-ISAPI-4.0_64bit" />
    <remove name="ExtensionlessUrl-Integrated-4.0" />
  </handlers>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)

  • 请注意,对我来说这不起作用 - 它需要是"ExtensionlessUrlHandler-Integrated-4.0". (4认同)

小智 15

我在HandlerMapping中将"StaticFile"处理程序放在"ExtensionlessUrlHandler-*"前解决了这个问题.


归档时间:

查看次数:

30935 次

最近记录:

8 年,1 月 前