❤️ 关注 Furion 微信公众号有惊喜哦!
🫠 遇到问题了
问题反馈
到 Furion 开源仓库反馈
Skip to main content

1. HttpContext 应用

· 2 min read
dotNET China

HttpContext 重大调整​

在 ASP.NET 的时代,我们通常通过 HttpContext 全局静态类获取请求上下文,但在 ASP.NET Core 中,HttpContext 是一个非静态的抽象类,无法手动创建,也无法通过静态获取。

虽然在 ASP.NET Core 中无法直接获取 HttpContext 对象。但是微软也提供了注入 IHttpContextAccessor 方式获取。

HttpContext 多种获取方式​

在 ControllerBase 派生类中​

在 ControllerBase 派生类中,我们可以直接通过 HttpContext 属性获取 HttpContext 对象。

通过注入 IHttpContextAccessor​

在 Furion 框架中,默认已经注册了 IHttpContextAccessor 服务,所以我们可以通过构造函数注入该对象获取。

public class AppService
{
public AppService(IHttpContextAccessor httpContextAccessor)
{
var httpContext = httpContextAccessor.HttpContext;
}
}

通过 App.HttpContext​

App 静态类也提供了 App.HttpContext 获取 HttpContext 对象。

HttpContext 拓展方法​

Furion 框架也提供了一些常用的 HttpContext 拓展方法

获取当前请求的特性​

var attribute = httpContext.GetMetadata<SomeAttribute>();

设置 Swagger 自动授权​

httpContext.SigninToSwagger("你的token");

退出 Swagger 授权​

httpContext.SignoutToSwagger();

获取本地 IP 地址​

var ipv4 = httpContext.GetLocalIpAddressToIPv4();
var ipv6 = httpContext.GetLocalIpAddressToIPv6();

获取客户端 IP 地址​

var ipv4 = httpContext.GetRemoteIpAddressToIPv4();
var ipv6 = httpContext.GetRemoteIpAddressToIPv6();