青岛做网站优化公司,淄博网站运营公司,龙口网站制作价格,郑州郑东新区网站建设ASP.NET Core中的HttpContext开发#xff0c;在ASP.NET开发中我们总是会经常用到HttpContext。
那么在ASP.NET Core中要如何使用HttpContext呢#xff0c;下面就来具体学习ASP.NET Core HttpContext。
注入HttpContextAccessor
ASP.NET Core中提供了一个IHttpContextAcces…ASP.NET Core中的HttpContext开发在ASP.NET开发中我们总是会经常用到HttpContext。
那么在ASP.NET Core中要如何使用HttpContext呢下面就来具体学习ASP.NET Core HttpContext。
注入HttpContextAccessor
ASP.NET Core中提供了一个IHttpContextAccessor接口HttpContextAccessor 默认实现了它简化了访问HttpContext。
它必须在程序启动时在IServicesCollection中注册这样在程序中就能获取到HttpContextAccessor并用来访问HttpContext。
services.AddSingletonIHttpContextAccessor, 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。
那么新建的程序是在哪注入的呢。
这里就是在 public void ConfigureServices(IServiceCollection services){ // Add framework services. services.AddMvc();}
services.AddMvc() 中注入。 实现HttpContext.Current
大家在ASP.NET 中大量用 HttpContext.Current获取HttpContext 现在ASP.NET Core已经不这么做了。
不过如果你还是想用静态 HttpContext.Current 降低迁移旧程序的成本还是可以实现的。
新建一个静态 HttpContext 类 public static class HttpContext { private static IHttpContextAccessor _accessor; public static Microsoft.AspNetCore.Http.HttpContext Current _accessor.HttpContext; internal static void Configure(IHttpContextAccessor accessor) { _accessor accessor; } }
然后接着再添加一个扩展类。
public static class StaticHttpContextExtensions { public static void AddHttpContextAccessor(this IServiceCollection services) { services.AddSingletonIHttpContextAccessor, HttpContextAccessor(); } public static IApplicationBuilder UseStaticHttpContext(this IApplicationBuilder app) { var httpContextAccessor app.ApplicationServices.GetRequiredServiceIHttpContextAccessor(); HttpContext.Configure(httpContextAccessor); return app; } }
接着就可以在Startup 类中进行调用。
默认情况下如果在MVC项目中直接调用 UseStaticHttpContext() 即可。 public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory){app.UseStaticHttpContext();
在没有注入 HttpContextAccessor的项目中还需在ConfigureServices 方法中调用
services.AddHttpContextAccessor();
然后就可以在其他地方使用HttpContext.Current。 public IActionResult Index(){var statichttpcontext HttpContextDemo.HttpContext.Current; return View();}
这里演示的是在Controller 中调用其实更多的是在其他地方调用如中间件及一些自己写的Service。
Controller 中其实可以直接使用HttpContextControllerBase类中有一个HttpContext 属性。
原文地址http://www.cnblogs.com/linezero/p/6801602.html .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注