web-dev-qa-db-ja.com

IIS 7.0はセッション変数を保持しません

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(

どんな助けでも大歓迎です!


上記のサンプルページのプロセス

alt text

alt text


その他のテストは、これがIE(この場合はie8)、Firefox、Safari、Opera、= Chromeそれらはすべて正しい「答え」を与えます

alt text


状況の スクリーンキャストを確認してください

1
balexandre

誰かがこの「バグ」を見つけたら、それを解決するために簡単なことをしてください。

  • 仮想アプリケーションを削除します
  • 新しい仮想アプリケーションを作成します(以前と同じ名前にすることができます)
0
balexandre

Explorerではアンダースコアが機能せず、セッションがnullになるため、par200864でURLpar_2008_64を変更する必要があります。

1
Mirich

従来のセッション状態では、問題のサイトで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が機能する場合は、そこに行きます。

0
MikeBaz - MSFT

顧客にも同じ問題がありました。この場合、アプリケーションを削除して追加しても問題は解決しません。秘訣は次のとおりです。URLのアンダースコアを置き換えるか削除します。

0
Gloomholder