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

“当使用限定范围的服务时,将服务注入到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。 要触发,您不需要作用域,可以调用

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

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

  • 我正在尝试注册一个客户端到spring-eureka-server,客户端在注册后就注销了 Eureka-客户端日志: 请告诉我有什么可能出了问题。

  • 问题内容: 到目前为止,我一直在使用Webstorm的内置网络服务器来为我的内容提供服务,而我的客户端应用程序一直在不运行任何客户端的情况下进行开发。 当人们使用带有Express的Node充当其Web服务器时,我经常看到的是关于是否应将HTML文件与node或与客户端代码一起放置的争论。 我了解html或css中包含的javascript文件最好存储在客户端目录中? 所以我的第一个问题是,使用这