在Blazor Server应用程序中,将服务范围设置为整个应用程序或其子范围。这意味着服务在整个应用程序或其子范围内可用。但是,如果您尝试使用使用范围服务的组件(或者服务的一个实例)在不同的范围内多次调用,则可能会遇到问题。 以下是如何解决此问题的示例代码:
services.AddScoped
@inject IMyService MyService
protected override async Task OnInitializedAsync() { myData = await MyService.GetData(); }
这样,在每次从 MyService 中获取数据时,都会创建一个新的服务实例。如果您希望共享相同的服务实例,则应该使用 AddSingleton 代替 AddScoped。