2011-12-13 59 views
0

有誰知道,如果可以在運行時啓用/禁用HttpModule嗎?通過這個我並不一定意味着它必須從字面上關掉。我只希望能夠防止BeginRequest代碼被執行,然後在一段時間後再次能夠重新啓用該代碼。任何想法如何做到這一點?是否可以在運行時啓用/禁用HttpModule

編輯:有問題的HttpModule攔截所有打算用於一個Web服務的請求,並將它們複製到另一個WS。由於我只希望這種行爲進行負載測試,我希望在不需要停止服務時能夠打開/關閉它,手動編輯web.config並重新啓動服務。 HttpModule類位於WS端。

+0

給出的答案是顯而易見的,但是這個問題沒有提到,你對HttpModule本身沒有任何控制權(即你不能更改它的代碼)? –

+0

不,我創建了HttpModule並編寫了application.BeginRequest的代碼。 – KoturB

回答

0

與init方法一樣,您通過將回調方法添加到應用程序事件來訂閱BeginRequest。在這種情況下,你應該能夠退訂事件。我猜這樣的代碼應該工作。

application.BeginRequest - =(new EventHandler(this.Application_BeginRequest));

您可以根據需要再次回調添加到使用

application.BeginRequest + =(新的EventHandler(this.Application_BeginRequest))的事件時;

1

您可以使用應用程序參數作爲標誌並在BeginRequest中檢查其值(第一件事)。喜歡的東西:

public class Global : HttpApplication 
{ 
    protected bool myFlag; 

    //.... 

    protected internal void Application_BeginRequest(object sender, EventArgs e) 
    { 
     if (!myFlag) return; 
     // .... 
    } 
} 
+0

您能舉個例子嗎? – KoturB

+0

請看原來的文章澄清。 – KoturB

+0

如果我得到它的正確,那麼你可以在你的消息中有一個默認值的參數,你可以在攔截時檢查。 – 2011-12-13 09:08:03

相關問題