私は非常に努力しましたが、ASP.Net Webアプリケーションのインプロセスセッションのセッションタイムアウト値を設定する方法に関する解決策を見つけることができません。
VSTS 2008 + .Net 3.5 + C#を使用しています。これは私がタイムアウトを1分に設定するために私が書いたものです、それは正しいですか?
私はweb.config
のsystem.webセクションの下に書きました
<sessionState timeout="1" mode="InProc" />
タイムアウトを20分に設定したい場合は、次のようにします。
<configuration>
<system.web>
<sessionState timeout="20"></sessionState>
</system.web>
</configuration>
timeout
属性に設定している値は、セッションタイムアウト値を設定する正しい方法の1つです。
timeout
属性は、セッションが放棄されるまでのアイドル時間を分単位で指定します。この属性のデフォルト値は20です。
この属性に1の値を割り当てることで、セッションがアイドル状態から1分後に放棄されるように設定しました。
これをテストするには、単純なaspxページを作成し、Page_Loadイベントにこのコードを書き込みます。
Response.Write(Session.SessionID);
ブラウザを開いてこのページに行きます。セッションIDが表示されます。しばらくするのを待ってから、リフレッシュを押してください。セッションIDが変わります。
さて、私の推測が正しければ、セッションがタイムアウトしたらすぐにユーザーをログアウトさせます。これを行うために、あなたはユーザーの資格情報を検証するログインページを立ち上げて、このようなセッション変数を作成することができます -
Session["UserId"] = 1;
今、あなたはこのようにこの変数のためにすべてのページでチェックを実行しなければならないでしょう -
if(Session["UserId"] == null)
Response.Redirect("login.aspx");
これは、これがどのように機能するかを示すための最低限の例です。
ただし、プロダクション品質の安全なアプリを作成するには、ASP.NETで提供される Roles&Membership クラスを使用してください。彼らはあなたが使用しようとしている通常のセッションベースの認証よりはるかに信頼性が高いフォームベースの認証を提供します。
これをweb.config
で使用します。
<sessionState
timeout="20"
/>