2013-02-25 63 views
1

你好,我看到MSND任何東西,從IHttpHandler接口繼承有權訪問HttpContext對象(在下面的鏈接頁面的評論部分)如何IHttpHandler接口暴露的HttpContext對象

msdn HTTPContext

我的問題是界面是如何暴露這個對象的......我在界面中看不到任何類型的httpcontext屬性。我確實看到了採用httpcontext對象的「ProcessRequest」方法。但是我沒有看到如何導致httpcontext對象直接從接口中釋放,如msnd頁面所述。

原諒我,如果我錯過了一個關鍵的概念在這裏,相當新的這一點。謝謝

回答

1

不,它只傳遞給ProcessContext方法。處理程序然後與該HttpContext實例進行交互,因爲它是請求的上下文。你可以將上下文實例傳遞給其他各種方法,比如你想要的。

如果您查看有關IsReusable屬性的文檔,爲什麼這樣做會變得更加清晰。當該屬性爲true時,可以由同一個處理程序實例處理多個請求,因此必須提供單獨的HttpContext才能工作。

現在,如果您將IsReusable指定爲false,則可以將ProcessRequest中的HttpContext實例存儲在實例的屬性中。在某些情況下,不共享處理程序可能會導致性能問題,但您可能不需要擔心這一點。

+0

哦所以它的特定處理程序本身是存放httpcontext對象來說一個只是使用system.web的類? – mgmedick 2013-02-25 19:40:52

+0

嗯,我不完全確定你在那裏具體說什麼。基本上你說的是這個。我有一個實現IHttpHandler的類SomeHandler,並且asp.net知道IHttpHandler。當一個請求進入時,asp.net會去看看誰應該處理它,找到你的處理程序,並調用你的ProcessRequest方法,並給你HttpContext。這就是爲什麼它不需要暴露在任何地方。你不需要讓其他人知道上下文,所有需要發生的事情都是讓asp.net讓你知道上下文。 – 2013-02-25 19:46:24

+0

你問你可以從IHttpHandler以外的其他地方找到HttpContext實例嗎? – 2013-02-25 19:50:15