83184


Azure App ServiceでASP.NET Core MVCをリリースします。  
IIS上でホストする場合でいう、Session Timeoutおよび、Process Recycleはどのようにして設定できるでしょうか？

Process Recycleは１日１回固定時間に行い、Session Timeoutを1440分に設定することで、Process
Recycle時にしかセッションが切れない設定をしたいと考えています。

Azure App ServiceはDockerコンテナを利用しておらず、OSはWindowsを選択しています。


CC BY-SA 4.0
2021-10-09T01:32:20.917
82968
2021-10-20T01:12:46.193
8647
question
azure asp.net-core
Azure App Service での Sesston Timeout管理


Azure App Service上でインプロセスのセッションを用いた場合、Session
Timeoutの設定を行っても、プロセスの再起動はコントロールできないため、セッションが消えるタイミングをコントロールすることはできない。

インプロセスでの運用はあきらめ、Redis, Cosmos DB, SQL Serverなどをセッションストアとして用いるのが良い。

そもそもCloudという性質上、Azure上でのセッション管理は上記のようなプロセスに依存しないセッションストアを用いるべき。  
ASP.NET Core
MVCであれば、Startup.csのConfigureService()メソッド内でセッション用の分散キャッシュを定義するだけでセッションストアを切り替えられる。

[code]

        // SQL Serverをセッションストアとして用いる例
        services.AddDistributedSqlServerCache(options =>
        {
            options.ConnectionString = Configuration.GetConnectionString("DefaultConnection");
            options.SchemaName = "dbo";
            options.TableName = "SQLSessions";
        });
        services.AddSession(options =>
        {
            options.IdleTimeout = TimeSpan.FromMinutes(60 * 24);
            options.Cookie.HttpOnly = true;
            options.Cookie.IsEssential = true;
            options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
        });
    
[/code]


CC BY-SA 4.0
2021-10-20T01:12:46.193
83184
2021-10-20T01:12:46.193
8647
82968
answer