2010-04-29 68 views
1

我在HttpHandler中設置Session變量,然後在ASPX頁面的Page_load事件中獲取它的值。我用它設置使用Firefox會話變量迷路,在IE中工作

public void ProcessRequest(HttpContext context) 
    { 
     HttpPostedFile file = context.Request.Files["Filedata"]; 
     context.Session["WorkingImage"] = file.FileName; 
    } 

它的工作在IE瀏覽器就好了(而在此之前有人建議我檢查file.FileName的有效性,如果我硬編碼的測試串在了那裏。出現同樣的問題) ,但在Firefox會話變量未找到,讓「對象引用不設置到對象的實例」錯誤在下面的代碼:

protected void Page_Load(object sender, EventArgs e) 
    { 
     string loc = Session["WorkingImage"].ToString(); 
    } 

有沒有人遇到過這個問題 - 希望拿出一個是否傳遞會話變量?

回答

0

這是一個HTTPHandler?如果這有一定機會與Flash有關,並且Flash正在提出請求,那麼您將對閱讀the Flash Cookie Bug非常感興趣。基本上,Flash只轉發IE cookie。

簡單的修復方法是在Global.asax的Application_BeginRequest中調用correctCookie,並將SessionId放入Flash請求的查詢字符串中。

Public Shared Sub correctCookie() 
    Try 
     Dim session_cookie_name As String = "ASP.NET_SESSIONID" 
     Dim session_value As String = HttpContext.Current.Request.QueryString("sid") 
     If session_value IsNot Nothing Then 
      UpdateCookie(session_cookie_name, session_value) 
     End If 
    Catch ex As Exception 
    End Try 
End Sub 

Private Shared Sub UpdateCookie(ByVal cookie_name As String, ByVal cookie_value As String) 
    Dim cookie As HttpCookie = HttpContext.Current.Request.Cookies.[Get](cookie_name) 
    If cookie Is Nothing Then 
     Dim cookie1 As New HttpCookie(cookie_name, cookie_value) 
     HttpContext.Current.Response.Cookies.Add(cookie1) 
    Else 
     cookie.Value = cookie_value 
     HttpContext.Current.Request.Cookies.[Set](cookie) 
    End If 
End Sub 
我不使用閃速
+0

我需要抓住上傳瓦特/ Uploadify(我有,當我在的HttpHandler的Process_Request我)的文件的名稱和它傳遞到另一個ASPX圖像編輯器頁面,因此在Page_load中調用獲取文件名。在Firefox中啓用Cookie。由於這將是一個公共應用程序,因此我將無法控制瀏覽器設置,但我只是使用與Firefox一起安裝的默認設置,這意味着它已設置爲接受Cookie(也包括第三方cookie)。 您是否仍然建議像上面那樣使用correctCookie&UpdateCookie? (如果是這樣,你知道一個C#示例,任何機會) – user328422 2010-04-29 04:38:32