.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();

這個方法的好處是可以通過 bool 返回值來判斷讀到是否成功。

讀取方法二:直接 FirstOrDefault

var providedApiKey = Request.Headers[ApiKeyHeaderName].FirstOrDefault();

只讀取第一個出現的值,如果對應的值不存在,會返回 null

讀取方法三:直接 ToString()

var providedApiKey = Request.Headers[ApiKeyHeaderName].ToString();

讀取指定 key 都對應的所有值,並用 , 連接, 如果對應的值不存在,會返回 string.Empty


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM