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