2011-08-12 39 views
7

我正在查看IIS7.5配置(system.webServer/handlers)。web.config中處理程序的路徑屬性的含義

你知道\*.\*在處理程序的路徑參數中有什麼不同嗎? 您可以使用file.*(匹配file.txt和file.xml)或abc.a?c(匹配abc.abc和abc.asc)嗎?

路徑參數可以引用「文件夾」嗎?像\*\f4\*.txt

鑑於像

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

一個http請求的路徑是什麼論據嘗試匹配的部分?

回答

7

**.路徑在您的URL中匹配某些模式的意義上並不是真正的「通配符」映射。

*處理程序處理的不匹配站點的HTTP處理程序已經指定的任何路徑(或動詞/先決條件)的所有內容的請求。 HTTP處理程序列表實際上是一個有序列表,如果按路徑排序,IIS7的MMC中的默認視圖可能會引起誤解。要查看真實的處理順序,您應該點擊右側操作窗格中的*查看順序列表鏈接

當你這樣做時,你會看到*處理程序最後一個被稱爲StaticFile處理程序。可能有一些其他如TRACEVerbHandlerOPTIONSVerbHandler只到TRACEOPTIONS動詞迴應,你通常可以忽略,因爲它們沒有在正常操作下執行。

*.處理程序是特定於ASP.NET 4.0和是在你安裝ASP.NET 4.0時添加的,這個處理程序在那裏提供對無擴展URL的支持,最初這個處理程序什麼也不做只有在安裝KB980368 hotfix(它也包含在Windows 2008R2/Windows 7 Service Pack 1中)時才起作用。

有一個由Thomas Marquardt幾個大文章關於*.處理程序和擴展名的URL:

How ASP.NET MVC Routing Works and its Impact on the Performance of Static Requests
How Extensionless URLs Are Handled By ASP.NET v4

有不少最初吸收那些文章,你可能需要重新審視IIS7管道的基本原理,讓你的頭部圍繞在他們身上(我花了幾分鐘的時間讀取材料),但堅持下去。