IIS 7.0 não mantém variáveis ​​de sessão

IIS 7.0 não mantém variáveis ​​de sessão

Se eu hospedar uma página ASP.NET com:

<%@ 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 Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            HttpContext.Current.Session["a"] = "A";
            lbl.Text = "assigned Session Variable";
        }
    }
</script>

<html>
<head>
    <title>Testing Sessions</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button ID="btn" runat="server" Text="reload" OnClick="btn_Click" />
        <hr />
        <asp:Label ID="lbl" runat="server" />
    </div>
    </form>
</body>
</html>

na primeira execução eu recebo o assigned Session Variabletexto, mas ao clicar o objeto Session é semprenull

Existe uma opção que preciso ativar/desativar para usar as variáveis ​​de sessão normais?

funciona bem no IIS 6.0 e Cassini (no VS 2008 e 2010).

Estou começando a ficar sem ideia do que está acontecendo :o(

Qualquer ajuda é muito apreciada!


o processo da página de exemplo acima

texto alternativo

texto alternativo


Mais testesmostra que isso só acontece no IE (ie8 neste caso), Firefox, Safari, Opera, Chrome todos dão a "resposta" correta

texto alternativo


Verifica aelenco de tela da situação

Responder1

Você deve alterar sua url par_2008_64 em par200864 porque no explorer o sublinhado não funciona e a sessão fica nula

Responder2

O estado de sessão tradicional exige que os cookies estejam habilitados para o site em questão. É possível que o Internet Explorer esteja configurado para bloquear o cookie vindo do servidor e os outros navegadores não estejam configurados dessa forma? Isso explicaria a diferença de comportamento. Você deve ser capaz de usar o Fiddler (cf.http://www.fiddler2.com/fiddler2/) para observar o tráfego HTTP entre o IE e o servidor e ver se o IE está enviando o cookie de volta ao servidor. Suspeito fortemente que a resposta seja "não".

Você pode potencialmente definir sessões sem cookies (por exemplohttp://msdn.microsoft.com/en-us/library/ms972429.aspx) em seu arquivo web.config para confirmar isso também; se cookieless funcionar, então pronto.

Responder3

Se alguém encontrar esse "bug", faça algo simples para resolvê-lo.

  • exclua o aplicativo virtual
  • crie um novo aplicativo virtual (pode ter o mesmo nome anterior)

Responder4

Tive o mesmo problema em um cliente. Remover e adicionar o aplicativo não resolverá o problema neste caso. O truque é: Substitua ou remova o sublinhado do URL!

informação relacionada