ASP.Net Webアプリケーションのインプロセスセッションのセッションタイムアウト値を設定する方法についての解決策が見つかりません。
VSTS 2008 + .Net 3.5 + C#を使用しています。タイムアウトを1分に設定するために私が自分で書いたものですが、正しいですか?
私はsystem.webセクションの下に書いた web.config
<sessionState timeout="1" mode="InProc" />
ASP.Net Webアプリケーションのインプロセスセッションのセッションタイムアウト値を設定する方法についての解決策が見つかりません。
VSTS 2008 + .Net 3.5 + C#を使用しています。タイムアウトを1分に設定するために私が自分で書いたものですが、正しいですか?
私はsystem.webセクションの下に書いた web.config
<sessionState timeout="1" mode="InProc" />
回答:
タイムアウトを20分に設定する場合は、次のようなものを使用します。
<configuration>
<system.web>
<sessionState timeout="20"></sessionState>
</system.web>
</configuration>
あなたが設定された値timeout
属性は、セッションタイムアウト値を設定する正しい方法の一つです。
このtimeout
属性は、セッションが放棄されるまでにアイドル状態でいられる分数を指定します。この属性のデフォルト値は20です。
この属性に値1を割り当てることで、アイドル状態の1分後にセッションが破棄されるように設定しました。
これをテストするには、単純なaspxページを作成し、このコードをPage_Loadイベントに記述します。
Response.Write(Session.SessionID);
ブラウザを開いて、このページに移動します。セッションIDが出力されます。1分が経過するのを待ってから、更新を押してください。セッションIDが変更されます。
さて、私の推測が正しければ、セッションがタイムアウトしたらすぐにユーザーをログアウトさせる必要があります。これを行うには、ユーザーの資格情報を検証するログインページを作り、次のようなセッション変数を作成します-
Session["UserId"] = 1;
今、あなたはこのようなこの変数のためにすべてのページでチェックを実行する必要があります-
if(Session["UserId"] == null)
Response.Redirect("login.aspx");
これは、これがどのように機能するかを示す最低限の例です。
ただし、プロダクション品質の安全なアプリを作成するには、ASP.NETによって提供されるRoles&Membershipクラスを使用します。これらは、使用しようとしている通常のセッションベースの認証よりもはるかに信頼性の高いフォームベースの認証を提供します。
MVCを使用している場合は、Viewsディレクトリのweb.configではなく、Webアプリケーションのルートディレクトリのweb.configファイルにこれを配置します。また、彼の質問で述べたGeorge2のようにではなく、system.webノード内にある必要があります。「web.configのsystem.webセクションの下に書き込みました」
タイムアウトパラメータ値は分を表します。
sessionState要素で設定できる属性は他にもあります。ここで情報を見つけることができます:docs.microsoft.com sessionState
<configuration>
<system.web>
<sessionState timeout="20"></sessionState>
</system.web>
</configuration>
その後、次のメソッドを追加することで、Global.asaxファイルで新しいセッションの開始をキャッチできます。
void Session_Start(object sender, EventArgs e)
{
if (Session.IsNewSession)
{
//do things that need to happen
//when a new session starts.
}
}