2017-07-30 54 views
1

我試圖相交標題的列表:是否有可能與另一個列表相交Request.Headers?

var validHeaders = Request.Headers.ToArray().Intersect(ValidHeaders.List); 

凡ValidHeaders被定義爲:

public static class ValidHeaders 
{ 
    public static readonly IList<string> List = new ReadOnlyCollection<string> 
    (new List<string> 
    { 
     "Content-Type", 
     "DataServiceVersion", 
     "MinDataServiceVersion", 
     "Accept", 
     "If-Match", 
     "If-None-Match", 
     "Prefer" 
    }); 
} 

如何相交HttpRequestHeaders列表與另一個列表?

回答

2

返回所有標頭和它們的報頭,其Key(標題名稱)在ValidHeaders.List

var validHeaders = Request.Headers.Where(header => ValidHeaders.List.Any(k => string.Equals(k, header.Key, StringComparison.InvariantCultureIgnoreCase))); 

這被發現可以作爲一個擴展方法的靜態ValidHeader

public static class ValidHeaders { 
    public static readonly IList<string> List = new ReadOnlyCollection<string>(new List<string> 
    { 
     "Content-Type", 
     "DataServiceVersion", 
     "MinDataServiceVersion", 
     "Accept", 
     "If-Match", 
     "If-None-Match", 
     "Prefer" 
    }); 

    public static IEnumerable<KeyValuePair<string, IEnumerable<string>>> GetValidHeaders(this HttpRequestMessage request) { 
     var validHeaders = request.Headers.Where(header => ValidHeaders.List.Any(k => string.Equals(k, header.Key, StringComparison.InvariantCultureIgnoreCase))); 
     return validHeaders; 
    } 
} 
的值

並使用

var validHeaders = Request.GetValidHeaders(); 
+0

我們不需要區分大小寫的比較嗎? –

+0

以及在這種情況下在HttpRequestHeader中使用的List匹配個案中的值。容易修改代碼來確實忽略案例 – Nkosi

+0

,但頭文件的情況會不一樣嗎? –

相關問題