栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在ASP.NET Core中获取HttpContext.Current?[重复]

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在ASP.NET Core中获取HttpContext.Current?[重复]

通常,将Web窗体或MVC5应用程序转换为ASP.NET Core 将需要 大量的重构。

HttpContext.Current
已在ASP.NET Core中删除。从单独的类库访问当前HTTP上下文是ASP.NET
Core试图避免的混乱体系结构类型。有几种方法可以在ASP.NET Core中对其进行重新架构。

HttpContext属性

您可以通过

HttpContext
任何控制器上的属性访问当前HTTP上下文。与原始代码示例最接近的事情是将其传递
HttpContext
给您正在调用的方法:

public class HomeController : Controller{    public IActionResult Index()    {        MyMethod(HttpContext);        // Other pre    }}public void MyMethod(Microsoft.AspNetCore.Http.HttpContext context){    var host = $"{context.Request.Scheme}://{context.Request.Host}";    // Other pre}

中间件中的HttpContext参数

如果您正在为ASP.NET Core管道编写自定义中间件,则当前请求

HttpContext
Invoke
自动传递到您的方法中:

public Task Invoke(HttpContext context){    // Do something with the current HTTP context...}

HTTP上下文访问器

最后,您可以使用

IHttpContextAccessor
帮助程序服务来获取由ASP.NET
Core依赖项注入系统管理的任何类中的HTTP上下文。当您拥有控制器使用的通用服务时,此功能很有用。

在构造函数中请求此接口:

public MyMiddleware(IHttpContextAccessor httpContextAccessor){    _httpContextAccessor = httpContextAccessor;}

然后,您可以以安全的方式访问当前的HTTP上下文:

var context = _httpContextAccessor.HttpContext;// Do something with the current HTTP context...

IHttpContextAccessor
默认情况下并不总是将其添加到服务容器中,因此
ConfigureServices
为了安全起见将其注册:

public void ConfigureServices(IServiceCollection services){    services.AddHttpContextAccessor();    // if < .NET Core 2.2 use this    //services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();    // Other pre...}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/395402.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号