1

私はこれにリンクしているプログラマーにこの質問をしました。本文を送信しなくても、応答ごとに一意のリクエストIDを返送するために使用できる、削除される可能性が低い適切なヘッダーを見つけようとしています。

私が検討したヘッダーの1つはヘッダーでしPragmaた。仕様を見ると、追加のno-cacheHTTP 1.0下位互換性値だけでなく、アプリケーション固有の値も対象としているように見えるので、使用できるはずです。たとえば、のようなものを送信できるはずですno-cache; requestid=id

だからDelegatingHandler私は自分のIDでそれに書いてみました:

//HttpResponseMessage Response; 
Response.Headers.Add("pragma", "some_value"); 

no-cacheしかし、それは;でクライアントに到着します。いつも。WebAPIは、キャッシュがオフになっていることと一致するキャッシュヘッダーを自動的に送信すると思います。これにはキャッシュヘッダーも含まれますPragma

では、どうすれば自分の価値が維持され、上書きされないようにすることができますか?

4

1 に答える 1

2

私はそれをクラックしました、答えはあなたCacheControlがHttpResponseMessageにもヘッダーを設定することを確認することです、そしてそれはそれからいくつかの少し怪しいロジックをバイパスしますSystem.Web.Http.WebHost.HttpControllerHandler私はこれについてCodePlexで議論を開きました;ロジックを変更する必要があると思います) 。

だから代わりに

//HttpResponseMessage Response;
Response.Headers.Add("pragma", "some_value");

あなたはしなければならない:

Response.Headers.CacheControl = 
  new System.Net.Http.Headers.CacheControlHeaderValue() 
  { 
    NoCache = true 
  };
Response.Headers.Add("pragma", "some_value");

(現在のAPIのデフォルトでは、すべての応答のキャッシュをオフに切り替えるため、NoCacheを使用しました)。

于 2012-07-26T08:38:22.603 に答える