5

Wenn ich eine ASP.NET-Seite hosten mit:IE8 nicht halten Session-Variablen

<%@ 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> 

auf dem ersten Lauf ich tun, um die assigned Session Variable Text, sondern auf das Objekt Session klicken ist immer null

Gibt es da eine Option, die ich aktivieren/deaktivieren muss, um die normalen Session-Variablen zu verwenden?

funktioniert gut auf IIS 6.0 und Cassini (unter VS 2008 und 2010).

Ich fange an, ohne Ideen zu sein, was los ist: o (

Jede Hilfe wird sehr geschätzt


das Verfahren der Beispielseite über

alt text

alt text


Weitere Tests zeigt, dass dies nur in IE (IE8 in diesem Fall) geschieht, Firefox, Safari, Opera, Chrome sie alle die richtige "Antwort" geben

alt text


Kontrolle der screen cast of the situation

+0

Der Code scheint anders als das Beispiel. Welches Klickereignis lädt "neu"? Derjenige, der sich mit dem Cache oder der Sitzung beschäftigt? –

+0

Ja, am Ende habe ich noch eine 'Cache'-Schaltfläche hinzugefügt, um zu sehen, wie Cache gehandhabt wurde ... es funktioniert korrekt, aber ich brauche die Sitzungsvariablen, wie ich sie pro Benutzer haben möchte, nicht pro Anwendung und den Daten ist etwas, das ich wirklich nicht im Cache haben muss. ** ScreenCast ** hat den neuen Code (der Beispielcode am Anfang meiner Frage) – balexandre

+0

Ich habe das gleiche Problem ... weiß jemand, was könnte das Problem sein? Die Seite funktioniert gut in Firefox, aber die Benutzer (im ganzen Land) verwenden IE8. Die Seite funktionierte im IE8 bis vor ein paar Tagen einwandfrei. Ich kann keine Erklärung finden! –

Antwort

2

Das Problem könnte die Unterstreichungen in der Domäne sein. entfernen Sie das _ und sehen Sie, ob das gleiche passiert

+1

) Das Blockieren von Cookies, wenn der Host Unterstriche enthält, ist ein bekanntes Problem in IE. Http://support.microsoft.com/kb/316112 – EricLaw

0

Sitzungs-IDs werden über einen lokal gespeicherten Cookie vom Browser verwaltet.

Laufen Sie in einem geschützten Modus, der verhindert, dass IE8 Cookies speichert? Es sollte ein rotes Warnsymbol in der Statusleiste sein. Etwas auf der "... verhindert, dass diese Seite einen Cookie speichert"

+0

Ich habe bereits die IE-Einstellungen auf "Niedrig" gesetzt, die Domäne zu Vertrauenswürdigen Sites hinzugefügt, in den Erweiterten Einstellungen habe ich sogar die Optionen hinzugefügt, um nicht vertrauenswürdigen Inhalt anzuzeigen ... aber alles, was ich tue, bekomme ich gleich (ich starte neu IE): o ( – balexandre