wal*_*wal 1

我可以问一下你想达到什么目的吗?是否试图避免缓存?

询问的原因是我已经查看了HttpClient(特别是HttpClientHandler)的源代码和源代码HttpWebResponse,并且我不相信您可以从标题中获取此信息。

HttpClient/HttpClientHandler确实在内部使用 HttpWebResponse,但它不会公开来自以下位置的所有属性HttpWebResponse

private HttpResponseMessage CreateResponseMessage(HttpWebResponse webResponse, HttpRequestMessage request)
{
      HttpResponseMessage httpResponseMessage = new HttpResponseMessage(webResponse.StatusCode);
      httpResponseMessage.ReasonPhrase = webResponse.StatusDescription;
      httpResponseMessage.Version = webResponse.ProtocolVersion;
      httpResponseMessage.RequestMessage = request;
      httpResponseMessage.Content = (HttpContent) new StreamContent((Stream) new HttpClientHandler.WebExceptionWrapperStream(webResponse.GetResponseStream()));

      //this line doesnt exist, would be nice
      httpResponseMessage.IsFromCache = webResponse.IsFromCache;// <-- MISSING!
     ...
 }
Run Code Online (Sandbox Code Playgroud)

所以我认为你的选择是:

a)查看源代码以HttpWebRequest确定逻辑IsFromCache并以某种方式对其进行改造HttpClient(这甚至可能不可能,取决于逻辑实际执行/需要的内容)

b) 请求 ASP.NET 团队将此属性包含在 HttpResponseMessage 中。要么直接作为财产,要么他们可以“保留”HttpWebResponse

这两种选择都不是很抱歉,因此我最初的问题是,你想实现什么目标?