小编MBi*_*irk的帖子

中间件和 Blazor 组件的范围

我正在开发服务器端 Blazor 应用程序,并遇到了有关范围服务的一些问题。为了简单起见,我使用默认的 Blazor 模板(带有计数器的模板)重新创建了我的问题。

我有一个服务“CounterService”,它将计数器初始化为 1 并公开该计数器以及递增它的方法。非常基本:

public class CounterService
    {
        public int Counter { get; private set; }

        public CounterService()
        {
            Counter = 1;
        }

        public void IncrementCounter()
        {
            Counter++;
        }
    }
Run Code Online (Sandbox Code Playgroud)

然后,我在 Startup.cs 中将此计数器注册为范围服务:`services.AddScoped()

然后我有一个自定义 ASP.NET 中间件,在本例中为“CounterInitializerMiddleware”。

public class CounterInitializerMiddleware
    {

        public CounterInitializerMiddleware(RequestDelegate next)
        {
            _next = next;
        }

        public RequestDelegate _next { get; }

        public async Task Invoke(HttpContext context, CounterService counterService)
        {
            Console.WriteLine($"CounterInitializer invoked from request path: {context.Request.Path.Value}");
            counterService.IncrementCounter();
            counterService.IncrementCounter();
            await _next(context);
        }
    }

    public static …
Run Code Online (Sandbox Code Playgroud)

asp.net dependency-injection owin-middleware blazor blazor-server-side

8
推荐指数
1
解决办法
1447
查看次数