2009-05-26 68 views
5

我知道這已被問here但答案(使用處理程序代替)不能解決問題,因爲我使用的是不實現IHttpHandler的第三方組件。在某些位置禁用HttpModule

那麼,有沒有辦法在某個請求上加載/卸載HttpModule?

編輯:我忘了提及我們正在使用.NET 2.0。對於僞造它我感到抱歉。

回答

1

我沒有測試這一點,但一個comment in this article似乎表明,有可能通過在web.config中使用<location>元素僅登記特定位置的模塊,例如:

<location path="some/path"> 
    <system.web> 
     <httpModules> 
     <remove name="name"/> 
     <add name="name" type="type"/> 
     </httpModules> 
    </system.web> 
    </location> 
+0

我們已經試過了,但由於某種原因,它不適用於我們:( – 2009-05-26 16:05:15

+0

我會將其標記爲答案,直到我爲我們的特定問題提出更好的解決方案,好像它不是因爲一個引渡原因 – 2009-06-15 07:39:36

0

我假定問題在於HttpModule的繼承,您是否需要使用第三方控件繼承web.config?

嘗試添加此屬性,其中路徑將作爲組件的存儲位置;

<location path="/ThirdPartyComponents" inheritInChildApplications="false"> 
    ... 
</location> 
0

你可以這樣做的一種方法是使用包裝模塊。在您的應用程序中註冊一個httpModule,然後在該模塊中創建與運行其他模塊相對應的規則。您可以訪問請求對象,因此您應該能夠檢測到您獲取的請求類型,並將邏輯路由到相關(自定義)模塊。