最近需要做一個對特定請求進行回應的接口,只是在內部處理,不存在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了。