.net 获取HttpContext

2023-11-08

在Controller中获取HttpContext

可以直接使用HttpContext来获取当前的HttpContext,例如:

[HttpGet]
public void Test()
{
    Console.WriteLine(HttpContext.GetHashCode());
}

在自定义的服务中获取HttpContext

在自定义的服务中获取HttpContext可以借助IHttpContextAccessor,通过它的HttpContext属性获取到一个HttpContext实例

例如有一个自定义的服务OrderService

namespace PureAPIProject
{
    public class OrderService : IOrderService
    {
        private readonly IHttpContextAccessor _httpContextAccessor;

        public OrderService(IHttpContextAccessor httpContextAccessor)
        {
            _httpContextAccessor = httpContextAccessor;
        }

        public void Show()
        {
            Console.WriteLine(_httpContextAccessor.HttpContext!.GetHashCode());
        }
    }
}

它的Show方法很简单,就是输出了一下HttpContext的HashCode

要想在OrderService中注入IHttpContextAccessor,当然需要在容器中事先注册好IHttpContextAccessor服务

services.AddHttpContextAccessor();
services.AddScoped<IOrderService, OrderService>();

然后就可以在Controller中验证OrderService中的HttpContext和Controller中直接获取的HttpContext是不是同一个HttpContext

[HttpGet]
public void Test()
{
    Console.WriteLine(HttpContext.GetHashCode());
    _orderService.Show();
}

访问该Action,发现二者输出的hashcode是一样的,证明确实在自定义的服务中获取到了HttpContext

参考:
微软官方文档:https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/http-context?view=aspnetcore-6.0
ASP.NET Core管道详解[2]: HttpContext本质论:https://www.cnblogs.com/artech/p/inside-pipeline-02.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.net 获取HttpContext 的相关文章

随机推荐

  • mysql sql语句查询指定月份

    需求 根据输入年月 查询指定数据 方法1 SELECT FROM 表名 WHERE YEAR 列名 年份 AND MONTH 列名 月份 方法2 SELECT FROM 表名 WHERE date format 列名 Y m 2020 01
  • JDBC快速入门,mysql8.0版本+druid+spring jdbc使用,出现因版本错误的解决方法

    JDBC核心技术 JDBC概述 数据持久化 持久化 persistence 把数据保存到可掉电式存储设备中以供之后使用 大多数情况下 特别是企业级应用数据持久化意味着将内存中的数据保存到硬盘上加以 固化 而持久化的实现过程大多通过各种关系数
  • runaway

    runaway函数 这个程序是查看你所用的电脑中所分配的栈的大小 include
  • 解决Java从MySQL读取大量数据时卡…

    今天晚上突然有个服务无法启动 这个服务在启动的时候会从数据库中加载一些数据 查看日志 有开始加载的日志 但没有完成加载的日志 判断问题是在加载数据时卡住 用top查看进程 发现CPU占用为0 又怀疑可能是因为jvm内存不够 用jstat查看
  • js限制输入框字数

  • Ubuntu上配置VS Code调试C++

    直接使用GDB在Ubuntu上调试C code 有时不是很方便 这里介绍下在Ubuntu上通过Visual Studio Code调试C code操作步骤 通过CMake编译 安装所需依赖 1 在Ubuntu上安装Visual Studio
  • Qt学习之QMainWindow(一)QMainWindow简介

    详细的后续会讲到 这里重在理解过程 Qt中的顶层窗口称为MainWindow 属于类QMainWindow QMainWindow也是继承于QWidget 通过子类化QMainWindow可以创建一个应用程序的窗口 MainWindow的结
  • SpringBoot项目使用EasyExcel读取上传Excel

    SpringBoot项目使用EasyExcel读取上传Excel 1 EasyExcel简介 EasyExcel是一个基于Java的简单 省内存的读写Excel的开源项目 在尽可能节约内存的情况下支持读写百M的Excel EasyExcel
  • Mybatis的mapper.xml批量插入、修改sql

    今天要有个功能 要进行一批数据的插入和修改 为了不频繁调用数据库 所以想到了批量插入和修改 因为从毕业后 就没写过批量插入和批量修改 所以在这里记录一下 避免后续再遇到忘记怎么写了 批量插入 传入的参数是List lt 实体 gt list
  • 基于vue-element-ui开发Hproxy项目前端

    hproxy项目前端使用vue element admin框架 页面为hook列表 和一个添加hook页面 添加路由 编辑src router index js文件 在constantRoutes列表追加如下路由内容 path hproxy
  • 【OpenGL】机器人手臂的实现

    一 基本功能 实现了机器人的一只手臂 由上臂 下臂 五根手指共同组成 通过A S D F G键向上旋转 通过a s d f g键向下旋转 通过方向键left和right转向 通过up和down实现放缩 效果图如下 二 实现过程 1 实现手臂
  • 音频编解码G729 PCM

    G 711与G 729的带宽分别是80Kbps和24Kbps 恩奎斯特原理规定声音的采样频率是每秒8000次 每次8bit 语音数据带宽就是64Kbps 8000 8 正常语音包是10ms成帧一次 每两帧成一个包 这样 每秒就成50个包 1
  • mysql连接池唤醒_当MySQL连接池遇上事务(一):神秘的幽灵锁

    MySQL连接池是一个很好的设计 通过将大量短连接转化为少量的长连接 从而提高整个系统的吞吐率 一般各个团队都会对连接池进行封装 只提供简洁的接口供上层使用 在上层看来 并不知道底层是否使用了连接池 甚至连访问数据库的IP和Port都不知道
  • 贪心算法 - java切金条问题 - Kaiqisan

    大家好 都吃晚饭了吗 我是Kaiqisan 是一个已经走出社恐的一般生徒 今天康康一个贪心算法的经典例题 切金条问题 问题 一块金条切成两半 是需要花费和长度数值一样的铜板的 比如长度为20的金条 不管切成长度多大的两半 都要花费20个铜板
  • Ubuntu下编译openwrt

    从网上找的资料 还有自己出现的错误和解决方法 合并整理一下 很多安装时出错以及找解决方法的过程 已经放在另一篇文章里了 下面也放链接了Ubuntu下编译openwrt的过程出错及解决 m0 60027682的博客 CSDN博客 我是跟着视频
  • C 时间转化(秒化时.分.秒)

    写一个函数将以秒计数的时间转换为以时 分 秒计数的时间 函数原型为 char seconds to int seconds 编写main调用测试它 输入格式要求 d 提示信息 请输入时间 秒 n 输出格式要求 d秒合计 s n d小时 d分
  • 代码好坏的评判标准

    从新手接替一个项目开始 来介绍代码的评判维度有哪些 可读性 readability 一般来说 代码被阅读的次数远远超于被编写和执行的次数 代码如果基本符合编码规范 命名清晰 注释详尽 函数的长短合适 模块划分清晰 高内聚低耦合等 基本上代码
  • 出现ModuleNotFoundError:cannot import name ‘is_scalar_nan‘ from ‘sklearn.utils‘的问题

    在最近写能源大数据分析案例时 用到了SimpleImputer库来处理缺失值 由于我电脑上的sklearn库版本较低 先是出现了No module named sklearn impute 的问题 在查阅资料后 使用pip install
  • PWM控制智能小车速度

    用Arduino板子做小车 下面的简单程序基本能实现小车的基本行走 define STOP 0 define FORWARD 1 define BACKWARD 2 define TURNLEFT 3 define TURNRIGHT 4
  • .net 获取HttpContext

    文章目录 在Controller中获取HttpContext 在自定义的服务中获取HttpContext 在Controller中获取HttpContext 可以直接使用HttpContext来获取当前的HttpContext 例如 Htt