ASP.NETページをホストする場合:
<%@ 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>
最初の実行ではassigned Session Variable
テキストを取得しますが、クリックすると、Sessionオブジェクトは常にnull
になります。
通常のセッション変数を使用するためにオン/オフにする必要があるオプションはありますか?
IIS 6.0およびCassini(VS 2008および2010)で正常に動作します。
私は何が起こっているのかについての考えがなくなり始めています:o(
どんな助けでも大歓迎です!
上記のサンプルページのプロセス
その他のテストは、これがIE(この場合はie8)、Firefox、Safari、Opera、= Chromeそれらはすべて正しい「答え」を与えます
誰かがこの「バグ」を見つけたら、それを解決するために簡単なことをしてください。
Explorerではアンダースコアが機能せず、セッションがnullになるため、par200864でURLpar_2008_64を変更する必要があります。
従来のセッション状態では、問題のサイトでCookieを有効にする必要があります。 Internet ExplorerがサーバーからのCookieをブロックするように設定されていて、他のブラウザーがそのように設定されていない可能性はありますか?それは行動の違いを説明するでしょう。 Fiddler(cf。 http://www.fiddler2.com/fiddler2/ )を使用して、IEとサーバーの間のHTTPトラフィックを監視できるはずです。 IEがCookieをサーバーに送り返しているかどうかを確認します。答えは「いいえ」であると強く思います。
これを確認するために、web.configファイルでCookieなしのセッション(例: http://msdn.Microsoft.com/en-us/library/ms972429.aspx )を設定できる可能性があります。 cookielessが機能する場合は、そこに行きます。
顧客にも同じ問題がありました。この場合、アプリケーションを削除して追加しても問題は解決しません。秘訣は次のとおりです。URLのアンダースコアを置き換えるか削除します。