You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Server Side Blazor多会话问题求助:新设备访问未创建新会话

解决服务器端Blazor会话状态复用的问题

折腾了一整个夏天部署服务器端Blazor应用,结果遇到新设备访问复用旧会话、连登录系统都受影响的问题,确实够闹心的!还好已经找到精准的解决方案了:

问题核心

服务器端Blazor里如果服务生命周期配置不当,会导致不同用户/新设备访问时复用了之前的会话状态,而切换到Client模板又会牺牲性能,显然不是最优解。

具体解决方案

关键是调整你的Storage服务的注册生命周期——把它注册为Scoped类型即可。Scoped服务的生命周期和单个用户的会话绑定,每个新用户的访问请求(新会话)都会创建一个全新的实例,既不会复用旧状态,也完全不会影响其他用户的正常使用。

修改Startup.cs中的ConfigureServices方法,添加一行注册代码:

public void ConfigureServices(IServiceCollection services)
{
    services.AddRazorPages();
    services.AddServerSideBlazor();
    // 核心修改:将Storage注册为Scoped服务
    services.AddScoped<Storage>();
}

补充信息

  • 测试账号:
    • 用户名:user,密码:user
    • 用户名:test,密码:test
  • 项目示例需要基于.NET Core 3.0环境运行

内容的提问来源于stack exchange,提问作者Elio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:27:19