ASP.NET 6 Core Blazor Server配置长会话仍20分钟超时如何解决
问题根因
你修改的两个配置项都不控制Blazor Server的会话存活逻辑,20分钟超时是Blazor Server默认电路配置+身份认证Cookie默认过期共同导致的:
web.config中配置的requestTimeout是IIS对单个请求的最长执行时长限制,和用户会话空闲断开、登录状态保持完全无关AddSession配置的是传统ASP.NET Core会话中间件的超时,Blazor Server基于实时电路(Circuit)实现有状态会话,默认不依赖该中间件判定会话存活,修改该参数不生效- Blazor Server的
CircuitOptions.IdleTimeout默认值为20分钟,即用户无任何交互20分钟后电路会被自动销毁,这是你遇到超时的核心原因;如果启用了身份认证,认证Cookie默认过期时间也为20分钟,同样会触发登录超时。
修复配置
1. 修改Blazor Server电路空闲超时
在Program.cs中配置Blazor Server电路选项,将空闲超时设置为12小时:
builder.Services.AddServerSideBlazor() .AddCircuitOptions(opt => { // 核心配置:电路空闲12小时无交互才自动销毁 opt.IdleTimeout = TimeSpan.FromHours(12); // 连接断开后保留电路等待用户重连的时长,可根据内网网络情况调整 opt.DisconnectTimeout = TimeSpan.FromMinutes(5); // JS互操作调用默认超时时间,可按需调整 opt.JSInteropDefaultCallTimeout = TimeSpan.FromMinutes(10); });
2. 同步修改身份认证Cookie过期时间(若启用了登录认证)
如果你的应用需要登录后访问,必须同步修改认证Cookie的过期时间,否则Cookie过期后用户依然会被跳转至登录页:
// 若使用原生Cookie认证 builder.Services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) .AddCookie(opt => { opt.ExpireTimeSpan = TimeSpan.FromHours(12); opt.SlidingExpiration = true; // 开启滑动过期,用户有操作时自动续期有效期 }); // 若使用ASP.NET Core Identity,替换为以下配置 builder.Services.ConfigureApplicationCookie(opt => { opt.ExpireTimeSpan = TimeSpan.FromHours(12); opt.SlidingExpiration = true; });
3. 修正web.config配置错误
你当前web.config中的AspNetCore模块名配置错误,ASP.NET Core 3.0及以上版本使用AspNetCoreModuleV2模块,修正后的handlers节点如下:
<handlers> <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" /> </handlers>
aspNetCore节点下的requestTimeout参数无需修改,该参数仅限制单个请求的最长执行时间,不影响会话空闲超时。
4. 检查中间件顺序
确保Program.cs中的中间件顺序符合规范,顺序错误会导致配置失效,参考正确顺序:
app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); // 认证、授权中间件必须放在MapBlazorHub之前 app.UseAuthentication(); app.UseAuthorization(); // 无特殊需求可以不调用UseSession,Blazor Server不依赖该中间件 // app.UseSession(); app.MapBlazorHub(); app.MapFallbackToPage("/_Host"); app.Run();
注意:Blazor Server的电路会占用服务器内存资源,12小时的长超时配置仅适合内网小用户量场景,若用户规模较大建议搭配滑动过期策略,平衡用户体验和服务器资源开销。
内容的提问来源于stack exchange,提问作者DreamingOfSleep
相关产品推荐
相关产品推荐

