[英]Need to know how the Asynchronous WCF HTTP Module/Handler in IIS7.5 (WAS) can benefit me
[英]Understanding Handler mapping on IIS7.5
我試圖弄清楚 IIS7.5 中處理程序映射的含義以及 IIS 如何使用這些信息來決定誰執行什么。
例如,我看到幾個帶有 *.aspx 路徑的條目。 哪一個贏了? 會不會是某些條目僅在啟用經典管道時才適用,而其他條目僅在使用集成管道時適用? 位數(32 位、64 位)會影響考慮哪些條目?
如果有人可以解釋(或有解釋的鏈接)IIS7.5 在通用 HTTP 請求到來時做了什么(在“調度”/“路由”/“你:照顧那個!”):
GET /blabla/dummy.bla HTTP/1.1
Host: blabla.org
稍后我會對 IIS 重寫模塊或 ARR 的工作原理感興趣,但現在我只對句柄映射配置感興趣。
預先感謝!
Fallow 的回答不太准確,處理程序映射 IIS7 的處理方式與 IIS6 腳本映射不同。
在 IIS7 的管理控制台中,有一個重要的屬性未在 UI 中顯示,即preCondition
屬性。
preCondition
屬性用於指定何時應調用處理程序。 要回答您的問題:
例如,我看到幾個帶有 *.aspx 路徑的條目。 哪一個贏了? 會不會是某些條目僅在啟用經典管道時才適用,而其他條目僅在使用集成管道時適用? 位數(32 位、64 位)會影響考慮哪些條目?
不同的前置條件用於決定應該調用哪個.aspx
處理程序。 例如,在安裝了 ASP.NET 2.0 和 ASP.NET 4.0 的 64 位系統上,定義了六個可能的.aspx
處理程序映射。 每個都有不同的preCondition
規則:
<add name="PageHandlerFactory-ISAPI-4.0_32bit"
path="*.aspx"
modules="IsapiModule"
scriptProcessor="C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll"
preCondition="classicMode,runtimeVersionv4.0,bitness32" />
<add name="PageHandlerFactory-ISAPI-4.0_64bit"
path="*.aspx"
modules="IsapiModule"
scriptProcessor="C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll"
preCondition="classicMode,runtimeVersionv4.0,bitness64" />
<add name="PageHandlerFactory-Integrated-4.0"
path="*.aspx"
type="System.Web.UI.PageHandlerFactory"
preCondition="integratedMode,runtimeVersionv4.0" />
<add name="PageHandlerFactory-Integrated"
path="*.aspx"
type="System.Web.UI.PageHandlerFactory"
preCondition="integratedMode" />
<add name="PageHandlerFactory-ISAPI-2.0"
path="*.aspx"
modules="IsapiModule"
scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll"
preCondition="classicMode,runtimeVersionv2.0,bitness32" />
<add name="PageHandlerFactory-ISAPI-2.0-64"
path="*.aspx"
modules="IsapiModule"
scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll"
preCondition="classicMode,runtimeVersionv2.0,bitness64" />
如果您查看上面的每個前置條件,它們都略有不同,這就是preConditions
選擇執行哪個處理程序映射的方式。
有關更多信息,請參閱:
http://www.iis.net/ConfigReference/system.webServer/handlers/add
還有一篇很棒的文章在這里解釋了處理程序映射及其preConditions
:
上述解決方案對我不起作用,我嘗試了以下步驟並且它有效:在 IIS 管理器中打開 ISAPI 過濾器模塊並從列表中刪除 aspnet_isapi.dll。 aspnet_isapi.dll 是 ISAPI 擴展而不是 ISAPI 過濾器。
更多信息請參見: http://forums.iis.net/t/1107699.aspx?HTTP+error+500+0+error+code+0x800700b7
以下帖子與 IIS 6.0 有關,但我沒有發現任何證據表明 IIS 7.X 中的行為有所不同。
IIS 檢查 ScriptMaps 中是否存在任何通配符應用程序映射,如果存在,則從 ScriptMaps 屬性調用 ORDER 中的第一個通配符應用程序映射。
只有當通配符應用程序映射返回並告訴 IIS“我沒有處理此請求”時,IIS 才會調用下一個通配符應用程序映射......直到 IIS 聲明“通配符應用程序映射處理此請求” “。”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.