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

Tod*_*ier 5 c# http dotnet-httpclient

考虑以下代码:

if (request.Headers.Contains(headerName))
    ...
Run Code Online (Sandbox Code Playgroud)

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

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

我究竟如何"确定"这一点?该Headers集合在内部知道允许哪些标题名称,并且此列表request.Headers与其不同request.Content.Headers.看来我有2个选项来验证任意字符串:

  1. 根据BCL文档或源代码,保持自己的"白名单"进行验证.
  2. 使用try/catch逻辑.

这些方法都不是理想的.有没有办法利用已经包含的知识System.Net.Http来执行此验证?