Asp.Net Core获取请求上下文HttpContext

倖福魔咒の 提交于 2020-11-16 00:14:07

注:特别说明当前版本对应.Net Core2.1意义上框架

一、注入HttpContextAccessor

ASP.NET Core中提供了一个IHttpContextAccessor接口,HttpContextAccessor 默认实现了它简化了访问HttpContext。

它必须在程序启动时在IServicesCollection中注册,这样在程序中就能获取到HttpContextAccessor,并用来访问HttpContext。

services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();

 

二、获取HttpContextAccessor

下面来实际做一个操作,获取 HttpContextAccessor。

新建一个ASP.NET Core Web 应用程序,选择Web 应用程序。 身份验证勾选为不进行身份验证。

然后在HomeController 加入如下代码:

复制代码
public class HomeController : Controller
    {
        private IHttpContextAccessor _accessor;
        public HomeController(IHttpContextAccessor accessor)
        {
            _accessor = accessor;
        }
        public IActionResult Index()
        {
            var httpcontext = _accessor.HttpContext;
            return View();
        }
    }
复制代码

这样就能获取到 HttpContext

运行以后就能获取到 HttpContext 对象。上面也说到,必须在程序启动时注入才能获取到HttpContextAccessor。

 

三、实现HttpContext的全局使用。

public class MvcContext
{public static IHttpContextAccessor Accessor;
    public static HttpContext GetContext()
    {
        return Accessor.HttpContext;
    }

}

在配置中保存IHttpContextAccessor,用于获取上下文

public void Configure(IApplicationBuilder app, IHostingEnvironment env,IServiceProvider serp, IHttpContextAccessor  accessor)
        {
            MvcContext.Accessor = accessor;

            if (env.IsDevelopment())
            {
                app.UseBrowserLink();
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
            }

            app.UseStaticFiles();
        }

 

更多使用说明可以参考:http://www.cnblogs.com/linezero/p/6801602.html

 

更多:

Asp.Net Core 404处理

EF Core中执行Sql语句查询操作之FromSql,ExecuteSqlCommand,SqlQuery

Asp.Net Core IIS发布后PUT、DELETE请求错误405.0 - Method Not Allowed 因为使用了无效方法(HTTP 谓词)

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!