
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 Variable
texto, 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
Mais testesmostra que isso só acontece no IE (ie8 neste caso), Firefox, Safari, Opera, Chrome todos dão a "resposta" correta
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!