Web.config文件中handlers的path属性意义解析

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”参数试图匹配什么部分?
1个回答

8
**. 路径并不是真正意义上的“通配符”映射,不能匹配 URL 中的某些模式。 * 处理程序处理所有未与站点 HTTP 处理程序中已指定的任何路径(或动词/先决条件)匹配的内容。HTTP 处理程序列表实际上是一个有序列表,在 IIS7 的 MMC 中默认视图可能会误导您,如果按路径排序。要查看真正的处理顺序,您应单击右侧操作窗格中的“查看有序列表”链接。
这样做后,您将看到 * 处理程序最后出现,并称为 StaticFile 处理程序。可能还有一些其他处理程序,例如 TRACEVerbHandlerOPTIONSVerbHandler,它们仅响应 TRACEOPTIONS 动词,通常可以忽略它们,因为它们在正常操作下不执行。 *. 处理程序专门针对 ASP.NET 4.0,并在安装 ASP.NET 4.0 时添加。此处理程序存在是为了提供对无扩展名的 URL 的支持。最初,此处理程序不起作用,只有在安装 KB980368 热补丁(也包含在 Windows 2008R2/Windows 7 Service Pack 1 中)时才会发挥作用。
有一些关于 *. 处理程序和无扩展名 URL 的绝佳文章,由 Thomas Marquardt 撰写:

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

最初这些文章可能需要吸收很多内容,您可能需要重新学习 IIS7 管道的基础知识来理解它们(我读了几遍材料才消化掉),但请坚持下去。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接