对本地IIS 8.0的HttpClient请求在响应中未生成预期的头
我向在IIS中运行的本地网站发出以下请求对本地IIS 8.0的HttpClient请求在响应中未生成预期的头,http,http-headers,.net-4.5,iis-8,Http,Http Headers,.net 4.5,Iis 8,我向在IIS中运行的本地网站发出以下请求 var httpRequestMessage = new HttpRequestMessage(); httpRequestMessage.RequestUri = new Uri("http://localhost:8081/"); httpRequestMessage.Method = HttpMethod.Get; var response = new HttpClient().SendAsync(httpRequestMessage).Resu
var httpRequestMessage = new HttpRequestMessage();
httpRequestMessage.RequestUri = new Uri("http://localhost:8081/");
httpRequestMessage.Method = HttpMethod.Get;
var response = new HttpClient().SendAsync(httpRequestMessage).Result;
这将生成以下响应头:
HTTP/1.1200正常接受范围:字节
日期:2013年6月3日星期一22:34:25 GMT
ETag:“50c7472eb342ce1:0”
服务器:Microsoft IIS/8.0
X-Powered-By:ASP.NET 通过Fiddler发出的相同请求会生成以下响应头(我已经强调了差异): HTTP/1.1200正常
内容类型:text/html
上次修改时间:2013年4月26日星期五19:20:58 GMT
接受范围:字节
ETag:“50c7472eb342ce1:0”
服务器:Microsoft IIS/8.0
X-Powered-By:ASP.NET
日期:2013年6月3日星期一22:29:34 GMT
内容长度:10 为什么响应标题会有所不同?
我是否正确使用了HttpClient(除了我正在同步调用Send之外)?TL;博士强> 要访问所有响应标题,您需要阅读
HttpResponseMessage.headers
和HttpResponseMessage.Content.headers
属性
Long(er)回答:
这基本上是:
var response = new HttpClient().GetAsync("http://uri/").Result;
var allHeaders = response.Headers.Union(response.Content.Headers);
foreach (var header in allHeaders)
{
// do stuff
}
我认为这有两个问题:
属性的命名不正确:它实际上应该是Headers
或SomeHeaders
。(我的意思是,真的,当你看到一个名为AllHeadersExceptContentHeaders
的属性时,你希望它返回所有的头还是一些头?我很确定它们违反了它们自己的框架设计准则。)Headers
- 在任何时候都没有提到这是所有标题的子集,开发者也应该检查
Content.headers