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日になるはず。


