6

HttpClientHttpResponseMessageを使用する場合、 WebResponse.IsFromCacheに相当するものは何ですか?

応答に確認できる HTTP ヘッダーはありますか?

4

3 に答える 3

2

参考までに: Windows.Web.Http HttpClient (Windows 8.1 アプリ開発を対象とした同様の API) には、結果の送信元を指定する HttpResponseMessage.Source フィールドが含まれています (一般的な値は「キャッシュ」と「ネットワーク」です)。

Windows.Web.Http クラスは、C# やその他の .NET 言語、C++、および JavaScript (Windows アプリ ストアのような WwaHost アプリとして実行する場合) から使用できます。

于 2014-01-02T21:50:22.297 に答える
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!
     ...
 }

したがって、私が見ているあなたのオプションは次のとおりです。

a)のソースコードを見てHttpWebRequest、ロジックを決定し、IsFromCacheこれを何らかの形で改造しますHttpClient(ロジックが実際に何をするか/必要とするかによって、これは不可能かもしれません)

b) ASP.NET チームに、このプロパティを HttpResponseMessage に含めるよう依頼してください。プロパティとして直接、またはおそらく「保持」することができますHttpWebResponse

これらのオプションはどちらもそれほど申し訳ありません。したがって、最初の質問です。何を達成しようとしていますか?

于 2013-01-01T01:48:02.127 に答える