Asp.net core 使用Razor模型中的作用域服务(依赖项注入)

Asp.net core 使用Razor模型中的作用域服务(依赖项注入),asp.net-core,razor,dependency-injection,Asp.net Core,Razor,Dependency Injection,我想在模型中使用作用域服务。注册情况如下: services.AddScoped<IOperationScoped, Operation>(); services.addScope(); 但微软表示,不要在作用域服务上使用构造函数注入: 在中间件中使用作用域服务时,将服务注入Invoke或InvokeAsync方法。不要通过构造函数注入进行注入,因为它会强制服务像单例一样运行 但我必须在构造函数外部注入作用域服务的选项是什么 在中间件中使用作用域服务时 注:我的重点 该引用特别

我想在模型中使用作用域服务。注册情况如下:

services.AddScoped<IOperationScoped, Operation>();
services.addScope();
但微软表示,不要在作用域服务上使用构造函数注入:

在中间件中使用作用域服务时,将服务注入Invoke或InvokeAsync方法。不要通过构造函数注入进行注入,因为它会强制服务像单例一样运行

但我必须在构造函数外部注入作用域服务的选项是什么

中间件中使用作用域服务时

注:我的重点

该引用特别指中间件,不适用于
PageModel
,后者可以并且建议使用构造函数注入

public class MyPage: PageModel {

    //ctr
    public MyPage(IOperationScoped operation) {
        //...
    }

    //...
}
PageModel类允许将页面的逻辑与其表示分离。它为发送到页面的请求和用于呈现页面的数据定义页面处理程序。这种分离允许:

  • 通过依赖项注入管理页面依赖项。
  • 单元测试
参考

注意:在中间件中使用作用域服务时,quote不适用于
PageModel
,它可以并且建议使用构造函数注入