ASP.NET Core开发之HttpContext
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.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。
那么新建的程序是在哪注入的呢。
这里就是在
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.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();} public static IApplicationBuilder UseStaticHttpContext(this IApplicationBuilder app){ var httpContextAccessor = app.ApplicationServices.GetRequiredService<IHttpContextAccessor>();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 中其实可以直接使用HttpContext,ControllerBase类中有一个HttpContext 属性。
转载于:https://blog.51cto.com/33997k7k/1924430
ASP.NET Core开发之HttpContext相关推荐
- asp.net core 自定义基于 HttpContext 的 Serilog Enricher
asp.net core 自定义基于 HttpContext 的 Serilog Enricher Intro 通过 HttpContext 我们可以拿到很多有用的信息,比如 Path/QuerySt ...
- asp.net core后台系统登录的快速构建
登录流程图 示例预览 构建步骤 当然,你也可以直接之前前往coding仓库查看源码,要是发现bug记得提醒我啊~ LoginDemo地址 1. 首先你得有一个项目 2. 然后你需要一个登录页面 完整L ...
- ASP.NET Core 运行原理解剖[4]:进入HttpContext的世界
本系列文章从源码分析的角度来探索 ASP.NET Core 的运行原理,分为以下几个章节: ASP.NET Core 运行原理解剖[1]:Hosting ASP.NET Core 运行原理解剖[2]: ...
- Dependency injection in ASP.NET Core
原文 github地址 ASP.NET Core supports the dependency injection (DI) software design pattern, which is a ...
- ASP.NET Core 认证与授权[1]:初识认证
在ASP.NET 4.X 中,我们最常用的是Forms认证,它既可以用于局域网环境,也可用于互联网环境,有着非常广泛的使用.但是它很难进行扩展,更无法与第三方认证集成,因此,在 ASP.NET Cor ...
- 《ASP.NET Core 微服务实战》-- 读书笔记(第3章)
第 3 章 使用 ASP.NET Core 开发微服务 微服务定义 微服务是一个支持特定业务场景的独立部署单元.它借助语义化版本管理.定义良好的 API 与其他后端服务交互.它的天然特点就是严格遵守单 ...
- 【新书推荐】《ASP.NET Core微服务实战:在云环境中开发、测试和部署跨平台服务》 带你走近微服务开发...
<ASP.NET Core 微服务实战>译者序:https://blog.jijiechen.com/post/aspnetcore-microservices-preface-by-tr ...
- ASP.NET Core 框架本质学习
本文作为学习过程中的一个记录. 学习文章地址: https://www.cnblogs.com/artech/p/inside-asp-net-core-framework.html 一. ASP.N ...
- 《ASP.NET Core 微服务实战》译者序
最近,我将<ASP.NET Core 微服务实战>一书由英文翻译为中文.这本书是由清华大学出版社引进的,目前还处于最后的排版校对过程中,现将该书的译者序发表于此. 以下为译者译全文: &q ...
最新文章
- Galaxy 生信平台(三):xlsx 上传与识别
- java logic_Java Logic总结2
- spark大数据基本概念整理以及软件下载链接
- JAVA实体类不要使用基本类型,基本类型包含byte、int、short、long、float、double、char、boolean...
- Javascript实现的倒计时时钟
- 信息与计算科学偏计算机的学校,信息与计算科学:披着计算机“外衣”的数学专业...
- ETL设计详解(数据抽取、清洗与转换)
- Android 自定义带文字图片的view,宝马上线娱乐亚洲第一-宝马上线娱乐亚洲第一...
- 连点4次android版本,连点器极速版下载-连点器快速版v4.0.8 安卓版 - 极光下载站...
- python完全平方数_python判断完全平方数的方法
- 微信安卓客户端逆向分析
- html怎么做qq空间主页,如何设计qq空间
- bugly怎么读_腾讯Bugly学习了解
- 超微服务器如何查看服务器信息,超微服务器远程
- 陶瓷电容的简单介绍--MLCC(NPO,C0G,X7R和Y5V等),瓷片电容(低频瓷介电容和高频瓷介电容)
- C# 数字转换成数组
- 使用chrome浏览器插件postman模拟post、get请求
- Windows Service 2012 IIS Microsoft excel Application
- 【Python】turtle小海龟画兔子
- 简述计算机仿真的基本步骤,计算机仿真技术试卷.doc
热门文章
- 30道linux面试题与答案(21-30)
- 监控组策略应用---组策略建模
- [收集] Web服务相关的, 介绍框架(framework)类的论文
- 对于初学者Python开发难学吗?适合初学者吗?
- 零基础入门学习Python,我与python的第一次亲密接触后的感受!
- mysql反弹提权_MySQL数据库反弹端口连接提权
- 微信开发者和其他服务器区别,求教微信公众号开发中两种认证技术的区别?
- mac微软雅黑字体_【字体字重】常见设计稿字体对应字重
- oracle列字符可以增加长度,ORACLE字符列长度语义
- 新闻更新php html,phphtml 新闻发布系统,运用php+mysql,里面包括数据库和php文件。 Other systems 其他 249万源代码下载- www.pudn.com...