注:特别说明当前版本对应.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
更多:
EF Core中执行Sql语句查询操作之FromSql,ExecuteSqlCommand,SqlQuery
Asp.Net Core IIS发布后PUT、DELETE请求错误405.0 - Method Not Allowed 因为使用了无效方法(HTTP 谓词)