5

Se ospito una pagina ASP.NET con:IE8 non mantiene le variabili di sessione

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

alla prima esecuzione faccio ottenere il testo assigned Session Variable, ma sul fare clic sull'oggetto Session è sempre null

Id c'è un'opzione che devo attivare/disattivare per utilizzare le normali variabili di sessione?

funziona correttamente su IIS 6.0 e Cassini (con VS 2008 e 2010).

sto iniziando ad essere senza idee su quello che sta succedendo:! O (

Qualsiasi aiuto è molto apprezzato


il processo della pagina esempio precedente

alt text

alt text


Altro test dimostra che questo succede solo in IE (IE8 in questo caso), Firefox, Safari, Opera, Chrome tutti danno la giusta "risposta"

alt text


controllo del screen cast of the situation

+0

Il codice appare diverso dall'esempio. Quale evento click fa "ricaricare" il fuoco? Quello che si occupa della cache o della sessione? –

+0

sì, ho finito per aggiungere anche un pulsante 'Cache' solo per vedere come è stato gestito Cache ... gestisce correttamente, ma ho bisogno delle variabili Session come voglio per utente, non per applicazione e i dati è qualcosa che non ho davvero bisogno di avere nella cache. ** ScreenCast ** ha il nuovo codice (il codice di esempio all'inizio della mia domanda) – balexandre

+0

Ho lo stesso problema ... qualcuno sa quale potrebbe essere il problema? Il sito funziona perfettamente su Firefox, ma gli utenti (in tutto il paese) utilizzano IE8. Il sito funzionava bene in IE8 fino a un paio di giorni fa. Non riesco a trovare una spiegazione! –

risposta

2

il problema potrebbe essere il carattere di sottolineatura nel dominio. rimuovere _ e vedere se succede la stessa cosa

+1

Il blocco dei cookie quando l'host contiene caratteri di sottolineatura è un problema noto in IE. Http://support.microsoft.com/kb/316112 – EricLaw

0

Gli ID di sessione vengono gestiti tramite un cookie memorizzato localmente dal browser.

Sei in esecuzione in una sorta di modalità protetta che impedisce a IE8 di memorizzare i cookie? Ci dovrebbe essere un'icona di avviso rossa sulla barra di stato .. qualcosa lungo il "... impedito questo sito di memorizzare un cookie"

+0

Ho già impostato le impostazioni IE per essere tutte "low", ho aggiunto il dominio ai siti attendibili, in Impostazioni avanzate aggiungo anche le opzioni per mostrare il contenuto non affidabile ... ma tutto ciò che faccio, ottengo lo stesso (riavvio IE): o ( – balexandre

Problemi correlati