C# ASP.NET Core 2.x会话空闲超时不工作

C# ASP.NET Core 2.x会话空闲超时不工作,c#,asp.net-core,cookies,session-cookies,C#,Asp.net Core,Cookies,Session Cookies,使用cookie身份验证和托管在IIS中的ASP.NET Core 2.x构建的应用程序 我正在尝试将cookie过期时间设置为120分钟,空闲超时时间设置为30分钟。 即,当用户浏览页面和提交表单时,如果用户离开页面/表单30分钟,并尝试再次与页面或表单交互,则需要验证(需要登录),并应返回options.LoginPath值 我曾尝试将空闲超时设置为10秒的较低值,并查看了其他几篇stackoverflow、.Net和Microsoft文章,以寻找合适的解决方案 如果有任何建议或其他事情,我

使用cookie身份验证和托管在IIS中的ASP.NET Core 2.x构建的应用程序

我正在尝试将cookie过期时间设置为120分钟,空闲超时时间设置为30分钟。 即,当用户浏览页面和提交表单时,如果用户离开页面/表单30分钟,并尝试再次与页面或表单交互,则需要验证(需要登录),并应返回options.LoginPath值

我曾尝试将空闲超时设置为10秒的较低值,并查看了其他几篇stackoverflow、.Net和Microsoft文章,以寻找合适的解决方案

如果有任何建议或其他事情,我将不胜感激

配置服务方法:

services.AddAuthentication(选项=>
{
options.DefaultAuthenticateScheme=CookieAuthenticationDefaults.AuthenticationScheme;
options.defaultsignnscheme=CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme=CookieAuthenticationDefaults.AuthenticationScheme;
}).AddCookie(选项=>
{
options.Cookie.HttpOnly=false;
options.Cookie.Expiration=TimeSpan.FromMinutes(120);
options.ExpireTimeSpan=TimeSpan.FromMinutes(120);
options.AccessDeniedPath=新路径字符串(“/Error”);
options.LoginPath=“/Account/Login”/>这决定将用户发送到哪个页面
//当cookie过期时,用户将返回到登录页面
}
);
//services.AddMemoryCache();
services.AddSession(选项=>
{
options.IdleTimeout=TimeSpan.FromSeconds(10);
options.Cookie.IsEssential=true;
});
配置方法包括:

app.UseAuthentication();
app.UseSession();
app.UseCookiePolicy();
编辑27/04:

  • 进入IIS,应用程序池>高级设置>将空闲超时(分钟)更新为30,并将Ping Enabled设置为False

  • 打开站点并导航到只有授权人员才能访问的页面,并离开该页面45分钟,然后尝试使用页面上的表单提交提交HttpPost,我预计会话已过期(我有一个SessionExpired和错误[catch unhandled]页面),尽管它成功提交了帖子

  • 我还检查了120分钟的cookie有效期,确认它会按预期将我带到SessionExpired页面


  • 有什么建议我可以在IIS中尝试其他方法吗?

    是否尝试在代码级别更改空闲超时?您是否尝试过修改IIS中的空闲超时?尝试在代码级别更改它,因为我们尚未确认是否将其保留在IIS中或移动到类似Azure的位置。如何使用Web.config,因为这是一个.NET Core应用程序,它在发布之前没有Web.config,并且仅引用.NET Core设置。根据options.Cookie.Expiration代码行,我确实有一个会话超时;只是AddSessionOptions中的options.IdleTimeout行的行为与我预期的不同,我认为您的IIS设置正在覆盖代码更改?