【发布时间】:2018-04-22 14:09:19
【问题描述】:
在 ASP.NET Core 中,我有一个在 DI 中注册为作用域的服务。我可以不使用IHttpContextAccessor 访问该服务中的HTTP 上下文及其开销吗?
【问题讨论】:
-
overhead是什么?
标签: asp.net-core
在 ASP.NET Core 中,我有一个在 DI 中注册为作用域的服务。我可以不使用IHttpContextAccessor 访问该服务中的HTTP 上下文及其开销吗?
【问题讨论】:
overhead 是什么?
标签: asp.net-core
您必须向容器添加一个作用域服务,然后您必须添加一个解析该服务的中间件并在其上设置当前的 http 上下文。
public class ScopedHttpContext
{
public HttpContext HttpContext { get; set; }
}
public void ConfigureServices(IServiceCollection services)
{
services.AddScoped<ScopedHttpContext>();
}
public void Configure(IApplicationBuilder app)
{
app.UseMiddleware<ScopedHttpContextMiddleware>();
}
public class ScopedHttpContextMiddleware
{
private readonly RequestDelegate _next;
public ScopedHttpContextMiddleware(RequestDelegate next)
{
_next = next;
}
public Task InvokeAsync(HttpContext context, ScopedHttpContext scopedContext)
{
scopedContext.HttpContext = context;
return _next(context);
}
}
【讨论】: