2010-09-07 81 views
1

我不知道爲什麼使用IE瀏覽器時,檢索會話值工作得很好,但使用Google Chrome和Firefox時,它不會返回任何?ASP.NET會話問題在ASHX和使用谷歌瀏覽器和火狐

我已經在通用處理程序類中包含了IRequiresSessionState/IReadOnlySessionState,但仍然無法工作。

所以我最後的手段是將我的會話值添加爲通用處理程序中的查詢字符串。

但我仍然想知道Chrome和Firefox中爲什麼和錯在哪裏?謝謝。

UPDATE: 這裏是我處理我SEESION方式SessionManager

它完美的ASPX頁面,並在IE,Chrome和火狐

但在我的ASHX頁面時。下面

 
<%@ WebHandler Language="C#" Class="Upload" %> 

using System; 
using System.Web; 
using System.Web.SessionState; 
using System.IO; 

public class Upload : IHttpHandler, IReadOnlySessionState 
{ 
    SessionManager sm; 

    public void ProcessRequest (HttpContext context) { 
     context.Response.ContentType = "text/plain"; 
     context.Response.Expires = -1; 

     sm = new SessionManager(); 

     try 
     { 
      HttpPostedFile postedFile = context.Request.Files["Filedata"]; 

      string uploadedas = string.Empty; 
      if (context.Request.QueryString["as"] != null) 
      { 
       uploadedas = context.Request.QueryString["as"]; 
      } 

      string username = sm.Username; 
      string sessionid = sm.SessionID; 

      // 
      // MORE CODES HERE 
      // 

      context.Response.Write(response); 
      context.Response.StatusCode = 200; 
     } 
     catch (Exception ex) 
     { 
      context.Response.Write("Error: " + ex.Message + "\r\n\r\n" + ex.StackTrace); 
     } 
    } 

    public bool IsReusable { 
     get { 
      return false; 
     } 
    } 
} 

sm.Username和sm.SessionID示例代碼返回時,Chrome和Firefox使用了emptry串..但正如我剛纔所說,這些都是甚至在不同的瀏覽器ASPX頁面完美的工作。

+1

如何爲會話設置Cookie設置?你可以在這裏給代碼嗎? – Aristos 2010-09-07 13:08:25

+0

我無法在FireFox中重現問題。我註冊了一個實現IHttpHandler,IRequiresSessionState和IReadOnlySessionState的簡單類,並且我的處理程序從FireFox 3.6.8請求中讀取存儲的會話值。也許如果您可以提供有關您的客戶端和服務器環境的更多信息,我們可以找到問題的根源。 – kbrimington 2010-09-07 13:22:03

+0

您是否找到解決方案?在Opera瀏覽器中,我遇到了同樣的問題。 – Soonts 2010-11-16 11:49:33

回答

0

會話是一種cookie。確保您在所有正在測試的瀏覽器中都啓用了Cookie。

+0

謝謝湯姆。在Google Chrome和Firefox中重新檢查這些選項,可以保存Cookie。 – jaysonragasa 2010-09-07 13:02:37

0

您如何從您的頁面調用您的ashx?你能提供示例代碼嗎?

你用Flash來調用ashx嗎? Flash有一個cookie錯誤,它始終將IE cookie發送到服務器,無論您使用的是哪個瀏覽器,由於它依賴於cookie,因此訪問ASP.NET會話很困難。

相關問題