HttpContext简介

.Net Core中的HttpContext上下文是个抽象类,命名空间为Microsoft.AspNetCore.Http

所在程序集

  1. \netstandard2.0\Microsoft.AspNetCore.Http.Abstractions.dll

 定义代码:

  1. namespace Microsoft.AspNetCore.Http
  2. {
  3. //
  4. // 摘要:
  5. // Encapsulates all HTTP-specific information about an individual HTTP request.
  6. public abstract class HttpContext
  7. {
  8. protected HttpContext();

一、在Mvc 控制器实例中包含了上下文对象

  1. public IActionResult Index()
  2. {
  3. HttpContext _context = this.HttpContext;
  4. return View();
  5. }

二、定义静态的IServiceProvider,全局获取当前请求上下文

特别说明此方法新版本中放弃使用,请使用其他方式:https://www.cnblogs.com/tianma3798/p/10361644.html

1.定义类

  1. public class TestOne
  2. {
  3. public static IServiceProvider ServiceProvider;
  4. public static HttpContext GetContext()
  5. {
  6. object factory = ServiceProvider.GetService(typeof(Microsoft.AspNetCore.Http.IHttpContextAccessor));
  7.  
  8. HttpContext context = ((IHttpContextAccessor)factory).HttpContext;
  9.  
  10. return context;
  11. }
  12. }

2.在配置文件Startup中,获取

  1. // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
  2. public void Configure(IApplicationBuilder app, IHostingEnvironment env, IServiceProvider svp)
  3. {
  4. TestOne.ServiceProvider = svp;
  5. .....
  6. }

3.再其他任何地方使用

  1. public IActionResult Index()
  2. {
  3. HttpContext _context = this.HttpContext;
  4. if (_context == TestOne.GetContext())
  5. return Content("上线文相同");
  6. return View();
  7. }

注意:

因为IHttpContextAccessor接口默认不是由依赖注入进行实例管理的。

我们先要将它注册到ServiceCollection中,不然在IIS发布后获取factory实例为null

  1. public void ConfigureServices(IServiceCollection services)
  2. {
  3. services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
  4.  
  5. // Other code...
  6. }

更多:

Asp.Net Core 视图整理(一)

Asp.Net Core异常处理整理

.Net Core配置文件读取整理

Asp.Net Core获取当前上下文对象的更多相关文章

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

    注:特别说明当前版本对应.Net Core2.1意义上框架 一.注入HttpContextAccessor ASP.NET Core中提供了一个IHttpContextAccessor接口,HttpC ...

  2. .NET Core 获取数据库上下文实例的方法和配置连接字符串

    目录 .NET Core 获取数据库上下文实例的方法和配置连接字符串 ASP.NET Core 注入 .NET Core 注入 无签名上下文 OnConfigure 配置 有签名上下文构造函数和自己n ...

  3. Nginx+Docker部署模式下 asp.net core 获取真实的客户端ip

    目录 Nginx+Docker部署模式下 asp.net core 获取真实的客户端ip 场景 过程还原 结论 参考资料 Nginx+Docker部署模式下 asp.net core 获取真实的客户端 ...

  4. 如何为ASP.NET Core的强类型配置对象添加验证

    原文: Adding validation to strongly typed configuration objects in ASP.NET Core 作者: Andrew Lock 译文: La ...

  5. Asp.Net Core获取请求信息/获取请求地址

     一.Asp.Net Core 2.0版本中目前HttpRequest是个抽象类 在控制器或视图上下文中获取到的 Request对象,是 DefaultHttpRequest的实例. 定义 如图 : ...

  6. asp.net core过滤器记录响应对象

    百度到的基本上就是读取response.body的流.然后记录完了之后,把流的index重新复位,这样也太麻烦了. 其实asp.net core团队肯定已经考虑到了这种需求,比如记录请求响应日志.给响 ...

  7. ASP.NET Core获取请求完整的Url

    在ASP.NET项目中获取请求完整的Url: 获取System.Web命名空间下的类名为HttpRequestBase的Url方法: /// <summary>在派生类中替代时,获取有关当 ...

  8. 基于Spring DM管理的Bundle获取Spring上下文对象及指定Bean对象

    在讲述服务注册与引用的随笔中,有提到context.getServiceReferences()方法,通过该方法可以获取到OSGI框架容器中的指定类型的服务引用,从而获取到对应的服务对象.同时该方法还 ...

  9. ASP.NET Core获取客户端IP地址

    1.在ConfigureServices注入IHttpContextAccessor // ASP.NET Core 2.1的注入方式 //services.AddHttpContextAccesso ...

随机推荐

  1. TFC2017 腾讯Web前端大会参会小结

    简述 上周有幸参加TFC腾讯Web前端大会,见识了各路前端大神的精彩演讲,干货满满的.会议流程分为上午主会场,以及下午的三个分会场.分享的主题涵盖Web新技术.Node.js.框架.工程化. 图形处理 ...

  2. 附001.etcd配置文件详解

    一 示例yml配置文件 # This is the configuration file for the etcd server.   # Human-readable name for this m ...

  3. poj-1459-最大流dinic+链式前向星-isap+bfs+stack

    title: poj-1459-最大流dinic+链式前向星-isap+bfs+stack date: 2018-11-22 20:57:54 tags: acm 刷题 categories: ACM ...

  4. Redis高可用之主从复制实践(四)

    0.Redis目录结构 1)Redis介绍及部署在CentOS7上(一) 2)Redis指令与数据结构(二) 3)Redis客户端连接以及持久化数据(三) 4)Redis高可用之主从复制实践(四) 5 ...

  5. Django插件之Django-hosts的应用

    Django插件之Django-hosts的应用 前因 网站移动端的域名是m.example.com,最开始只是在nginx做了映射,将m.example.com映射到example.com/m/下面 ...

  6. TreeMap(红黑树)源码分析

    1. HashMap.Entry(红黑树节点) private static final boolean RED = false; private static final boolean BLACK ...

  7. CentOS下的apache配置支持php

    修改Apache的配置文件httpd.conf(vi /etc/httpd/conf/httpd.conf) DirectoryIndex index.html index.php #添加index. ...

  8. crontab计划执行脚本详解

    Crontab是Linux系统中在固定时间执行某一个程序的工具,类似于Windows系统中的任务计划程序. 一.安装crontab yum install vixie-cron  #安装 chkcon ...

  9. lodoop打印控件详解

    注意:使用此打印控件需要引入(在我上传的Demo中都有): install_lodop32.exe install_lodop64.exe LodopFuncs.js jquery-1.10.0.mi ...

  10. Magent搭建Memcached集群

    原文地址:http://ultrasql.blog.51cto.com/9591438/1636374 Memcached集群介绍 由于Memcached服务器与服务器之间没有任何通讯,并且不进行任何 ...