(我不知道我是否也应该将这个问题发布到 ServerFault,因为它是关于 IIS 配置的?)
在 IIS7 中,我们可以通过以下方式告诉模块为托管内容运行(从而加速静态内容服务):
<modules>
...
<add name="WhateverName"
type="WhateverType"
preCondition="managedHandler"
...
</modules>
但。只要请求的 URL 中还有一个文件名(带扩展名),它就可以正常工作。如果省略它,IIS7 会认为您需要静态内容,并且托管模块将不会运行。
http://localhost/ <-- this one will skip managed handlers
http://localhost/default.aspx <-- this one will run them
如果我手动设置 IIS7 默认文件,所以第一个是default.aspx
,我可以看到没有区别没有区别。对我来说,这看起来、走路和听起来都像是一只虫子。这是一个错误!为什么?因为当我请求第一个请求时,它是一个托管请求,不是吗。当然是的。但 IIS7 将其视为静态请求。所以?这是一个错误。此请求应被视为受管理的。
如何说服 IIS7 为没有文件名的 URL 请求运行托管处理程序?
帮助思考
让我帮你思考一下:如果我重新排序system.webServer/handlers
,我肯定可以解决这个问题。StaticFile
在指向 的最后一个处理程序之前,StaticFileModule
我应该在目录请求上运行集成的 asp.net 处理程序。或者编写我自己的处理程序,它将默认文档附加到任何目录请求。我很确定其中之一应该可以解决它。但是我将如何配置/开发它?DefaultDocumentModule
DirectoryBrowsingModule