9

我正在查看 IIS7.5 配置(system.webServer/handlers)。

你知道处理程序的路径参数之间\*.和之间有什么区别吗?\*您可以使用file.*(匹配 file.txt 和 file.xml) 或abc.a?c(匹配 abc.abc 和 abc.asc) 吗?

路径参数可以引用“文件夹”吗?喜欢\*\f4\*.txt

给定一个 http 请求,例如

    GET \f1\f2.f3\f4\a.b.c?arg1.arg2.arg3=3&arg4.txt=1.4

path 参数试图匹配的部分是什么?

4

1 回答 1

8

在匹配 URL 中的某些模式的意义上,**.路径并不是真正的“通配符”映射。

*处理程序处理对与站点的 HTTP 处理程序中已指定的任何路径(或动词/前提条件)不匹配的所有内容的请求。HTTP 处理程序列表实际上是一个有序列表,如果您按路径排序,IIS7 的 MMC 中的默认视图可能会产生误导。要查看真实的处理顺序,您应该单击右侧操作窗格中的“查看有序列表”链接。

当你这样做时,你会看到*处理程序最后出现并被称为StaticFile处理程序。可能还有一些其他的,例如 theTRACEVerbHandler和 the OPTIONSVerbHandler,它们只响应TRACEandOPTIONS动词,您通常可以忽略它们,因为它们在正常操作下不会执行。

*.处理程序特定于 ASP.NET 4.0,并在您安装 ASP.NET 4.0 时添加。该处理程序用于为无扩展 URL 提供支持。最初,此处理程序不执行任何操作,只有在您安装KB980368 修补程序(也包含在 Windows 2008R2/Windows 7 Service Pack 1 中)时才会发挥作用。

Thomas Marquardt有几篇关于*.处理程序和无扩展 URL 的精彩文章:

ASP.NET MVC 路由的工作原理及其对静态请求性能的影响
ASP.NET v4 如何处理无扩展 URL

最初在这些文章中有很多要吸收的内容,您可能需要重新审视 IIS7 管道的基础知识以了解它们(我花了一些时间阅读这些材料),但请坚持下去。

于 2011-08-12T12:38:28.930 回答