CookieAuthentication cookie 在应用程序池回收后无效
CookieAuthentication cookies are invalid after application pool recycle
我有一个 .net 核心项目使用 Microsoft.AspNetCore.Authentication (2.2.0) 配置为使用 CookieAuthentication。 Cookie 被配置为持久性并在 7 天后过期。问题是每当应用程序池被回收时,所有登录的用户都会注销。
我根本没有使用会话。我已经验证了 cookie 仍然存在于网络浏览器中,似乎现有的 cookie 被服务器确定为无效。我怎样才能改变这种行为?
这是当前配置:
services
.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(
CookieAuthenticationDefaults.AuthenticationScheme,
options =>
{
options.AccessDeniedPath = "/";
options.LoginPath = "/";
options.LogoutPath = "/Authentication/Logout";
options.Events.OnRedirectToLogin = context =>
{
context.Response.Redirect("/?returnUrl=" + context.Request.GetEncodedPathAndQuery());
return Task.CompletedTask;
});
错误是 IIS 中应用程序池的配置错误。在应用程序池的 "Advanced settings" 中,设置 "Load User Profile" 需要设置为 "true"。
我有一个 .net 核心项目使用 Microsoft.AspNetCore.Authentication (2.2.0) 配置为使用 CookieAuthentication。 Cookie 被配置为持久性并在 7 天后过期。问题是每当应用程序池被回收时,所有登录的用户都会注销。
我根本没有使用会话。我已经验证了 cookie 仍然存在于网络浏览器中,似乎现有的 cookie 被服务器确定为无效。我怎样才能改变这种行为?
这是当前配置:
services
.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(
CookieAuthenticationDefaults.AuthenticationScheme,
options =>
{
options.AccessDeniedPath = "/";
options.LoginPath = "/";
options.LogoutPath = "/Authentication/Logout";
options.Events.OnRedirectToLogin = context =>
{
context.Response.Redirect("/?returnUrl=" + context.Request.GetEncodedPathAndQuery());
return Task.CompletedTask;
});
错误是 IIS 中应用程序池的配置错误。在应用程序池的 "Advanced settings" 中,设置 "Load User Profile" 需要设置为 "true"。