.Net核心会话Cookie部署到Azure时未设置

问题描述

我有一个使用会话cookie跟踪某些数据的asp.net core 3.1应用程序。这在我的开发机上工作得很好,但是在部署到Azure Web应用程序时未设置cookie。我需要做些什么才能使它在Azure中正常工作?

startup.cs中包含以下内容

services.AddSession(options =>
{
    options.Cookie.HttpOnly = true;
    options.Cookie.IsEssential = true;
});
public void Configure(IApplicationBuilder app,IWebHostEnvironment env)
{
    ...
    app.UseSession();
    ...
}

我正在使用以下代码设置Cookie:

session.SetString(_key,value);

我认为需要对配置进行简单的更改,但对于我的一生,我不知道它是什么。

解决方法

据我所知,Azure Web应用将默认使用ARR,您应确保已启用ARR关联。

如果启用了ARR Affinity,则充当负载平衡器的IIS服务器将在响应上放置cookie,这将导致用户始终在其会话中命中同一实例。这对传统应用程序兼容性很有好处,因为它们可能在设计时就没有考虑负载平衡。

您可以打开Azure Web应用程序服务并找到配置->常规设置->启用ARR关联性。

enter image description here