天天看點

自定義HTTPHANDLER 中使用SESSION 的方法

 最近需要做一個對特定請求進行響應的接口,隻是在内部處理,不存在UI,機于這種情況,當然是使用實作IHttpHandler來進行處理,可以減 掉加載HTML 控件的時間。本來都是這樣想的,對于IHttpHandler 中定義了兩個方法,ProcessRequest(HttpContext ctx) 和 IsRunable() 這兩個,看到在ProcessRequest(HttpContext ctx) 中有個HttpContext的輸入參數,本來以為通過這個就可以對所有的伺服器對象進行使用,隻是在前面需要對HttpContext的引用。不過問題 出現了,在這個自定義HTTP 響應處理頭中需要寫入Session,對于其他Request和Response 都可以通過使用HttpContext來引用使用,不過Session 就是不行,總是出現對象未進行引用的錯誤,真是百思不得其解,好好的HTTPCONTEXT 裡面都列出了可以使用的伺服器對象,但是就是SESSION 用不了!真苦,隻好将自定義HTTPHANDLER 的内容做到普通的WEBFORM 中。就在做好後,卻無意中發現在自定義HTTPHANDLER 中使用SESSION 的方法!

  1、先引用System.Web.SessionState 這個命名空間,

  2、如果是要在HttpHandler 中讀取Session的内容,就要在實作IHttpHandler 的類中同時實作IReadOnlySessionState 這個接口。

  3、如果是要在HttpHandler 中讀寫Session的内容,就要在實作IHttpHandler 的類中同時實作IRequiresSessionState

  這樣就可以在自定義的HttpHandler 中正常的使用Session了。