在在ASP.NET Core5.0中访问中访问HttpContext的方法步骤的方法步骤
ASP.NET Core 应用通过 IHttpContextAccessor 接口及其默认实现 HttpContextAccessor 访问 HttpContext。 只有在需要访问
服务内的 HttpContext 时,才有必要使用 IHttpContextAccessor。
通过通过 Razor Pages 使用使用 HttpContext
Razor Pages PageModel 公开 HttpContext 属性:
public class AboutModel : PageModel
{
public string Message { get; set; }
public void OnGet()
{
Message = HttpContext.Request.PathBase;
}
}
通过通过 Razor 视图使用视图使用 HttpContext
Razor 视图通过视图上的 RazorPage.Context 属性直接公开 HttpContext。 下面的示例使用 Windows 身份验证检索 Intranet
应用中的当前用户名:
@{
var username = Context.User.Identity.Name;
...
}
通过控制器使用通过控制器使用 HttpContext
控制器公开 ControllerBase.HttpContext 属性:
public class HomeController : Controller
{
public IActionResult About()
{
var pathBase = HttpContext.Request.PathBase;
...
return View();
}
}
通过中间件使用通过中间件使用 HttpContext
使用自定义中间件组件时,HttpContext 传递到 Invoke 或 InvokeAsync 方法,在中间件配置后可供访问:
public class MyCustomMiddleware
{
public Task InvokeAsync(HttpContext context)
{
...
}
}
通过自定义组件使用通过自定义组件使用 HttpContext
对于需要访问 HttpContext 的其他框架和自定义组件,建议使用内置的依赖项注入容器来注册依赖项。 依赖项注入容器向任
意类提供 IHttpContextAccessor,以供类在自己的构造函数中将它声明为依赖项:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddHttpContextAccessor();
services.AddTransient<IUserRepository, UserRepository>();
}
评论0