【问题标题】:Blazor Serverside singleton service, Changes in one browser are reflected in another, when loading the same pageBlazor Serverside 单例服务,加载同一页面时,一个浏览器中的更改会反映在另一个浏览器中
【发布时间】:2020-02-05 15:15:40
【问题描述】:

在 Blazor 服务器端,我使用单例服务在网站中创建了一个购物车,并且我希望不同的用户有不同的此服务实例,但是当我在两种类型的浏览器中加载网站时,将项目添加到购物车是反映在另一个浏览器中,甚至我也可以看到变化,(我还为每个用户的数据使用了单例服务,并将网站发布到网络上)。这是单例服务的正确行为吗?如何解决?

【问题讨论】:

    标签: blazor-server-side


    【解决方案1】:

    这是单例服务的预期行为。在您的情况下,您应该使用范围服务。

    Transient 生命周期服务 (AddTransient) 是在每次从服务容器请求时创建的。此生命周期最适合轻量级、无状态的服务。

    Scoped 生命周期服务 (AddScoped) 为每个客户端请求(连接)创建一次。

    Singleton 生命周期服务 (AddSingleton) 在第一次被请求时创建(或者在 Startup.ConfigureServices 运行并使用服务注册指定实例时)。每个后续请求都使用相同的实例。如果应用程序需要单例行为,建议允许服务容器管理服务的生命周期。不要实现单例设计模式并提供用户代码来管理类中对象的生命周期。

    取自Microsoft Docs

    【讨论】:

      猜你喜欢
      • 2013-07-11
      • 2015-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多