4

asp.netは初めてです。サイトにログインし、useridのセッションを作成しました。このセッションはs1と見なされます。有効期限が3日であるクライアントサイトにCookie(c1)を追加します。

ログアウトせずにブラウザを閉じ、同じURLを使用すると、セッションがnullであることがわかりましたが、Cookie(c1)を取得した後、新しいセッションを作成したとします。ただし、セッションs1はまだサーバー上のメモリを占有しています。今回は、2つのセッションが同じサーバー上でメモリを占有していることを意味します。

cookie(c1)でセッションs1を使用したい-それは可能ですか。または、2回目のリクエストがあった場合は、セッションs1を削除したいと思います。

私が使用したコードは次のとおりです。

 if (Session["UserInfo"] != null)
    {
      // code 
    }
    else
    {
        HttpCookie HT = Request.Cookies["User"];
        if (HT != null)
        {
           Session["UserInfo"] = HT["UserName"]; //Here new session is created while previous is already exist on server
        }
        else
        {
           //code
        }
    }
4

2 に答える 2

1

IEは、リクエストごとに新しいセッションIDを生成します。したがって、ブラウザを閉じると古いセッションIDが失われるため、ブラウザは新しいセッションIDでリクエストを送信します。そのため、uはセッションの値を取得できません。

ただし、サーバー上ではサーバーメモリを占有し、セッションタイムアウト後にサーバーによってクリアされます。

Firefoxは、リクエストごとに同じセッションIDでリクエストを送信します。ブラウザのタブを閉じても、セッションIDを取得できます。

于 2013-01-09T11:05:54.570 に答える
0

フォーム認証を使用した一般的なASP構成Cookie:

.ASPXFORMSAUTHの有効期限:30分ASP.NET_SessionIdの有効期限:セッションの終了時

したがって、ブラウザを閉じると、セッションは失われますが、ログオフされることはありません。ブラウザを再度開くと、ASP.NET_SessionIdのみが期限切れになります。

永続的なセッションCookieを作成する場合は、次を使用します。

永続的なIDCookieを作成する

于 2013-01-09T10:34:59.523 に答える