WEBセッションのタイムアウト時間を設定する方法
1日がっつりはまってしまったので備忘録。
環境WEBサーバ:IIS
WEBアプリケーション:.net core 2.1 MVC で作成しているWEBアプリケーション
セッションタイムアウトの時間を設定する箇所は、2か所。
①C#アプリケーションのロジック内に指定する、セッションオブジェクトのオプション
②IISのタイムアウト設定
※優先順位としては、①⇒②の順との事。
例)①が30分、②が60分の場合、 タイムアウト値は30分
①が60分、②が30分の場合、タイムアウト値は60分
①の設定
Startup.cs ⇒ [ConfigureServices]メソッドに以下を追記
※クッキーの設定 // クッキー有効期間は1日 services.ConfigureApplicationCookie(options => { options.Cookie.Name = "MyCokkie"; options.Cookie.HttpOnly = true; options.ExpireTimeSpan = TimeSpan.FromDays(1); options.Cookie.Expiration = TimeSpan.FromDays(1); options.LoginPath = "/login"; // ログインページのURL options.LogoutPath = "/logout"; //ログアウトページのURL options.Cookie = new CookieBuilder { IsEssential = true // required for auth to work without explicit user consent; adjust to suit your privacy policy }; }); // クッキーバリデーション期間も1日に設定 services.Configure<SecurityStampValidatorOptions>(options => { options.ValidationInterval = TimeSpan.FromDays(1); }); ※セッションの設定 services.AddSession(options => { options.IdleTimeout = TimeSpan.FromDays(1); options.Cookie.IsEssential = true; }); Startup.cs ⇒ [Configure]メソッドに以下を追記 app.UseSession(); app.UseCookiePolicy(); ※これで、セッション保持は1日になるはず。 ※ExpireTimeSpan・IdelTimeoutの設定は TimeSpan.FromDays(1);//1日 TimeSpan.FromSeconds(30);//30秒 TimeSpan.FromHours(1);//1時間 などが指定可能。
②の設定箇所
Windows Server 2016 に内包されるIISの場合
IISマネージャー⇒対象サイトの[アプリケーションプール]を選択⇒[詳細設定]を選択⇒
[プロセスモデル]⇒[アイドル状態のタイムアウト(分)]に値を設定
※1440と指定したら、セッション保持は1日になるはず。