如何在 .NET Core 3 中的 Controller 构造函数中访问 HttpContext?

Nic*_*ckG 3 c# .net-core asp.net-core asp.net-core-3.1

如何在 .NET Core 3.1 中的 Controller 构造函数中访问 HttpContext?

它在构造函数中似乎总是为 null,但在实际方法中可用。这在 MVC 4 中是可能的,并且在尝试将项目移植到 .NET Core 时出现了。

如果我尝试通过 DI 使用 HttpContextAccessor,则会失败并出现异常:

InvalidOperationException: Unable to resolve service for type 'Microsoft.AspNetCore.Http.HttpContextAccessor' while attempting to activate 'MyProject.Controllers.UsersController'

Far*_*ani 6

您可以使用IHttpContextAccessor来访问HttpContext.

要访问,HttpContext您必须添加services.AddHttpContextAccessor()ConfigureService方法

services.AddHttpContextAccessor();
Run Code Online (Sandbox Code Playgroud)

IHttpContextAccessor从构造函数中的依赖注入获取

private readonly IHttpContextAccessor _httpContextAccessor;

public UsersController(IHttpContextAccessor httpContextAccessor)
{
    _httpContextAccessor = httpContextAccessor;
}
Run Code Online (Sandbox Code Playgroud)

进入HttpContext

_httpContextAccessor.HttpContext
Run Code Online (Sandbox Code Playgroud)