2017-07-30 61 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

,但头文件的情况会不一样吗? –

相关问题