2012-12-31 17 views

答えて

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)このプロパティをHttpResponseMessageに含めるようにASP.NETチームに依頼してください。これらのオプションはいずれも大変申し訳ございませんが、私の元々の質問は、あなたは何を達成しようとしていますか?

+1

私はそれが欠けていることを認識しています。また、HttpClientのソースコードを見てきました.HttpWebRequestとIsFromCacheのソースはかなり難読化されているため、リバースエンジニアリングは難しく、不可能です。私はそれが必要なのは、HTTPエラーがキャッシュから返されたときに、クライアントが気づくであろうサーバー上でエラーが修正されているかどうかを確認するために、キャッシュリロードパラメータで再度試す必要があるからです。 –

2

FYI:Windows.Web.Http HttpClient(Windows 8.1のアプリケーション開発でターゲットにされた同様のAPI)には、結果がどこから来たのかを指定するHttpResponseMessage.Sourceフィールドが含まれています(一般的な値は "cache"と "network")。 。

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

関連する問題