2013-02-24 55 views
1

我最近已將所有會話檢查集成到global.asax中,但是由於我在頁面中調用我的filehandler.ashx來獲取圖像時已將它放在那裏我不斷收到會話的空引用錯誤(但僅當它調用時)。會話檢查global.asax與filehandler.ashx搞砸

如果我放一個try/catch來加載圖片,但顯然這不是一個好的解決方案。

void Application_PostAcquireRequestState(object sender, EventArgs e) 
    { 
     try 
     { 
      HttpContext context = HttpContext.Current; 
      if (context.Session["tid"] == null) //Null Reference here 
      { 

理想情況下,我正在尋找事件發生在回發或第一次加載,並沒有與文件處理程序擰緊。我想如果我不能,我總是可以像以前一樣將它放在master_page init中(這是不好的做法?),因爲這似乎工作正常。我只是認爲global.asax會是一個更好的解決方案。

關於接下來要做什麼的想法?

活動到目前爲止,我已經試過..

Application_AcquireRequestState 

Application_PostAcquireRequestState 

Application_PreRequestHandlerExecute 

Application_PreSendRequestContent 

回答

4

ASHX需要會話狀態被明確繼承:

public class SomeCustomService : IHttpHandler, IRequiresSessionState 
{ 
    // stuff 
} 
+0

哇,剛剛看到這一點,我將測試它今晚給更新..仍然期待這個謝謝你的解決方案。 – 2013-03-25 09:35:29

+0

回頭看,經過多一點的研究,我實際上一直在實施IReadOnlySessionState,但這也起到了作用,明確地讓我走上了正確的軌道,一切都在global.asax中很好地運行。非常感謝 :) – 2013-03-25 23:12:55