我的网站会话在托管环境中每十秒超时一次,但在本地开发环境中运行良好。我无法更改超时时间。
services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromSeconds(600);
options.Cookie.HttpOnly = true;
options.Cookie.IsEssential = true;
});
我甚至尝试过上面的配置,但它不起作用;即使操作完成,它仍然会在10秒钟后超时。
由您编写中间件逻辑,检查会话是否存在,并在会话不存在时重定向。
更好的方法是使用ASP.NET Core附带的标准Cookie身份验证。它内置了重定向功能。
https://learn.microsoft.com/en-us/aspnet/core/security/authentication/cookie?view=aspnetcore-3.0
我也遇到了类似的问题。它原来是覆盖会话选项的第三方库。我不得不使用dotnet源代码步进和断点来指示是哪个库造成了问题。
public OptionsFactory(IEnumerable<IConfigureOptions<TOptions>> setups, IEnumerable<IPostConfigureOptions<TOptions>> postConfigures, IEnumerable<IValidateOptions<TOptions>> validations)
{
_setups = setups as IConfigureOptions<TOptions>[] ?? new List<IConfigureOptions<TOptions>>(setups).ToArray();
_postConfigures = postConfigures as IPostConfigureOptions<TOptions>[] ?? new List<IPostConfigureOptions<TOptions>>(postConfigures).ToArray();
_validations = validations as IValidateOptions<TOptions>[] ?? new List<IValidateOptions<TOptions>>(validations).ToArray();
}
这里_setups
有两个项目,而不是我提供的一个会话选项。