如何知道任意标头名称作为请求标头,内容标头或两者都无效?

时间:2017-12-11 03:57:46

标签: c# http dotnet-httpclient

考虑以下代码:

if (request.Headers.Contains(headerName))
    ...

其中requestSystem.Net.Http.HttpRequestMessage的实例。 headerName相当武断;我们假设它来自用户输入。如果其值恰好为"Content-Type",则抛出异常:

  

System.InvalidOperationException:未使用的标题名称。确保请求标头与HttpRequestMessage一起使用,响应标头与HttpResponseMessage一起使用,内容标头与HttpContent对象一起使用。

我究竟如何“确定”这个? Headers集合在内部知道允许哪些标题名称,request.Headers的列表与request.Content.Headers的列表不同。似乎我有2个选项来验证任意字符串:

  1. 根据BCL文档或源代码保留我自己的“白名单”以进行验证。
  2. 使用try / catch逻辑。
  3. 这些方法似乎都不理想。有没有办法利用System.Net.Http中已包含的知识来执行此验证?

0 个答案:

没有答案