2010-09-07 169 views
5

如果我的主機與ASP.NET頁面:在第一次運行我得到了assigned Session Variable文本IE8不保留會話變量

<%@ Page Language="C#" %> 
<!DOCTYPE html> 
<script runat="server"> 

    protected void btn_Click(object sender, EventArgs e) 
    { 
     lbl.Text = HttpContext.Current.Session["a"] == null ? 
         "null" : 
         HttpContext.Current.Session["a"].ToString(); 
    } 
    protected void btn_Click2(object sender, EventArgs e) 
    { 
     lbl.Text = HttpContext.Current.Cache["a"] == null ? 
         "null" : 
         HttpContext.Current.Cache["a"].ToString(); 
    } 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!Page.IsPostBack) 
     { 
      HttpContext.Current.Session["a"] = "CBA"; 
      lbl.Text = "assigned Session Variable"; 

      HttpContext.Current.Cache.Add(
        "a", "ABC", null, 
        DateTime.Now.AddHours(2), TimeSpan.Zero, 
        CacheItemPriority.NotRemovable, null); 
     } 
    } 

</script> 

<html> 
<head> 
    <title>Testing Session</title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     <asp:Button ID="btn" runat="server" Text="read Session" OnClick="btn_Click" />&nbsp;&nbsp; 
     <asp:Button ID="btn2" runat="server" Text="read Cache" OnClick="btn_Click2" /> 
     <hr /> 
     <asp:Label ID="lbl" runat="server" /> 
    </div> 
    </form> 
</body> 
</html> 

,但在單擊會話對象始終是null

有沒有我需要打開/關閉使用正常會話變量的選項?

適用於IIS 6.0和Cassini(VS 2008和2010下)。

我開始是沒有什麼回事想法:O(

任何幫助是極大的讚賞


示例頁面的上方

過程

alt text

alt text


更多測試表明,這只是發生在IE瀏覽器(IE8在這種情況下),火狐,Safari,歌劇,鉻他們都給出正確的 「答案」

alt text


檢查screen cast of the situation

+0

代碼顯示與示例不同。哪個點擊事件會「重新加載」?一個處理緩存或會話? – 2010-09-07 12:12:20

+0

是的,我最終添加了一個'Cache'按鈕,以查看緩存是如何處理的......它的處理是否正確,但我確實需要會話變量,因爲我希望每個用戶使用會話變量,而不是每個應用程序和數據是我真的不需要緩存的東西。 ** ScreenCast **有新的代碼(在我的問題開始時的示例代碼) – balexandre 2010-09-07 12:20:52

+0

我遇到了同樣的問題......是否有人知道可能是什麼問題?該網站在Firefox上運行良好,但用戶(遍佈全國)使用IE8。 該網站在IE8中工作得很好,直到幾天前。我找不到解釋! – 2011-02-18 18:05:52

回答

2

問題可能是域中的下劃線。刪除_並查看是否發生了相同的事情

+1

當主機包含下劃線時阻止cookie是IE中的一個已知問題http://support.microsoft.com/kb/316112 – EricLaw 2011-05-27 20:03:03

0

會話ID由瀏覽器通過本地存儲的Cookie進行維護。

您是否在某種保護模式下運行,以防止IE8存儲Cookie?在狀態欄上應該有一個紅色的警告圖標..沿着「...阻止本網站存儲cookie」的東西。

+0

我已經使IE設置全部「低」,將域添加到可信站點,在高級設置中,我甚至添加了顯示不可信內容的選項......但我所做的一切,我都得到了相同的結果(我重新啓動IE):o( – balexandre 2010-09-07 12:19:00