Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对本地IIS 8.0的HttpClient请求在响应中未生成预期的头_Http_Http Headers_.net 4.5_Iis 8 - Fatal编程技术网

对本地IIS 8.0的HttpClient请求在响应中未生成预期的头

对本地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

我向在IIS中运行的本地网站发出以下请求

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

您是否验证了请求是否完全相同?你能把这两个请求也发到这里吗?