当前位置: 首页 > 知识库问答 >
问题:

“当使用范围服务时,将服务注入Invoke或InvokeAsync”是什么意思?

梁丘书
2023-03-14

我正在阅读关于.NET核心中的DI的MS文档。

任何人,请解释一下这是什么意思?

那么这里投票最多的答案之一使用构造函数DI注入作用域服务。AddTransient,AddScoped和AddSingleton服务差异?

共有1个答案

国仰岳
2023-03-14

在ASP.NET核心中间件:每请求依赖项中记录了这一点。

因为中间件是在应用程序启动时构造的,而不是每个请求,所以中间件构造器使用的作用域生存期服务不会在每个请求期间与其他依赖项注入类型共享。如果必须在中间件和其他类型之间共享范围服务,请将这些服务添加到Invoke方法的签名中。Invoke方法可以接受由di填充的其他参数:

public class CustomMiddleware
{
private readonly RequestDelegate _next;

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

// IMyScopedService is injected into Invoke
public async Task Invoke(HttpContext httpContext, IMyScopedService svc)
{
    svc.MyProperty = 1000;
    await _next(httpContext);
}
}
 类似资料:
  • 我在读关于。NET核心中的DI的MS文档。 然后,这里投票最多的答案之一是使用构造函数DI注入来实现作用域服务。AddTransient、AddScoped和AddSingleton服务的区别?

  • 问题内容: 将“当前”传递给AngularJS服务是否正确? 我处于一种$ service的状态,知道它仅由一个控制器使用,并且我想在$ service方法本身中引用该控制器的作用域。 这在 哲学上是 正确的吗? 还是最好将事件广播到$ rootScope,然后让我的控制器侦听它们? 问题答案: 要让控制器知道何时发生异步,请使用Angular promises。 要触发,您不需要作用域,可以调用

  • 我找不到这个问题的答案。。。 如果我注入服务容器,如: 那么它的工作原理就和我的一样好: 那么,我为什么不直接注入服务容器,然后从类中获取服务呢?

  • 主要内容:微服务架构,微服务架构 vs 单体架构,微服务的特点,微服务框架微服务(MicroServices)最初是由 Martin Fowler 于 2014 年发表的论文 《 MicroServices》 中提出的名词,它一经提出就成为了技术圈的热门话题。 微服务,我们可以从字面上去理解,即“微小的服务”,下面我们从“服务”和“微小”两个方面进行介绍。 1) 所谓“服务”,其实指的是项目中的功能模块,它可以帮助用户解决某一个或一组问题,在开发过程中表现为 IDE(集

  • 问题内容: 我已经用AngularJS编写了一个服务,但是我无法使其与角度种子处理方式一起使用。 控制器代码如下: 请注意,注释掉的部分工作正常,但我想像(推荐的)第二种方式来处理它。 我得到的错误是照片是未定义的,所以我的猜测是我传递(注入)它的方法是错误的,但是我找不到正确的方法 问题答案: 您需要定义服务: 一些参考: http://docs.angularjs.org/api/angula

  • 问题内容: 是否可以在angularJS中将一个服务注入到另一个服务中? 问题答案: 是。遵循angularjs中的常规注入规则。 感谢@simon。最好使用数组注入以避免最小化问题。