在 ASP.NET Core 中,每次请求都会有一组服务实例被创建,这些服务分别是 Singleton、Scoped 和 Transient。Scoped 服务的生命周期为当前请求期间,也就是同一次请求使用同一实例,请求结束时该实例会被自动释放。
以下是一个示例代码,展示了如何在 ASP.NET Core 应用中注入和使用 Scoped 服务:
public class HomeController : Controller
{
private readonly IScopedService _scopedService;
public HomeController(IScopedService scopedService)
{
_scopedService = scopedService;
}
public IActionResult Index()
{
ViewData["Message"] = $"Scoped Service Instance: {_scopedService.GetId()}";
return View();
}
}
public interface IScopedService
{
Guid GetId();
}
public class ScopedService : IScopedService
{
private Guid _id;
public ScopedService()
{
_id = Guid.NewGuid();
}
public Guid GetId()
{
return _id;
}
}
在上述代码中,HomeController
依赖于 IScopedService
接口,因此在应用启动时需要将 ScopedService
注入到 DI 容器中:
services.AddScoped();
当客户端发送请求时,将会创建一个 Scoped 实例,并且在所有的依赖项完成后,该实例会被自动释放。因此在每个请求中,IScopedService
的实例都是唯一的。
上一篇:ASP.NETCore.NET6应用默认返回XML格式而非JSON格式
下一篇:ASP.NETCore/Blazor-{PropertyName}字段必须是数字-如何在错误消息中更改属性名称。