.NET Core 中读取 Request.Headers 的姿势


Request.Headers 的类型是 IHeaderDictionary 接口,对应的实现类是 HeaderDictionary ,C# 实现源码见 HeaderDictionary.cs 。

HeaderDictionary 实际就是一个用于 保存 StringValues 的 KeyValuePair 。通过索引器访问时,如果 Request.Headers[HeaderName] 对应的值不存在,会返回 StringValues.Empty ,所以不需要进行 null 引用检查。索引器的实现实际就是 TryGetValue + StringValues.Empty 。

读取方法一:先 TryGetValue ,然后 FirstOrDefault

if (!Request.Headers.TryGetValue(ApiKeyHeaderName, out var apiKeyHeaderValues))
{
    return AuthenticateResult.NoResult();
}
var providedApiKey = apiKeyHeaderValues.FirstOrDefault();
GarsonZhang www.yesdotnet.com

这个方法的好处是可以通过 bool 返回值来判断读到是否成功。

读取方法二:直接 FirstOrDefault

var providedApiKey = Request.Headers[ApiKeyHeaderName].FirstOrDefault();
GarsonZhang www.yesdotnet.com

只读取第一个出现的值,如果对应的值不存在,会返回 null 

读取方法三:直接 ToString()

var providedApiKey = Request.Headers[ApiKeyHeaderName].ToString();
GarsonZhang www.yesdotnet.com

读取指定 key 都对应的所有值,并用 , 连接, 如果对应的值不存在,会返回 string.Empty 。

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
YES开发框架
上一篇:【已解决】.NET 微信支付API V3中JSAPI支付发起wx.chooseWXPay时,提示 支付验证签名失败
下一篇:微信支付:支付成功没有回调通知Notify_URL
评论列表

发表评论

评论内容
昵称:
关联文章

.NET Core 读取 Request.Headers 姿势
ASP.NET Core 读取Post Request.Body 正确姿势
C# 解析加载读取XML文件正确姿势
CEFSharp请求设置Header
ASP.NET Core MVC 在过滤器ActionFilter保存页面生成html静态页面文件
.NET Core鉴权授权正确方式(.NET5)
RestSharp请求https添加Cookie信息正确姿势
ASP.NET Core MVC路由约束
微信支付:headermchid与post payloadmchid不匹配
asp.net - 在 ASP.NET Core MVC 嵌套 TagHelper
.NET Core 项目windows server部署
ASP.NET MVC和ASP.NET Core MVC获取当前URL/Controller/Action
.NET Core ResponseCache 浏览器缓存
.NET Core MVC 实现长时间任务进度显示
.NET6一些常用组件配置及使用记录,持续更新。。。
C# 扫描识别图片文字(.NET Framework)
.NET5 ASP.NET Core 添加API限流
在ASP.NET Core web API使用Swagger/OpenAPI(Swashbuckle)
.NET Core生成后没有Nugetdll文件
.NET Core 项目调试时候不能修改代码

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码