2

.net 4.0 を実行している IIS 6 サーバーがあり、IE では 304 (Not Modified) を返しますが、Firefox や Chrome では返されません。保存 .svc ファイル内のこれおよびその他の呼び出しをキャッシュすることは決してありませんが、常に 200 および新しいデータにする必要があります。IIS7.5 が実行されている Win7 の localhost では、これは表示されません。応答ヘッダーには Cache-Content: private があり、IIS 6 で実行している場合、Fiddler は要求を表示しません。

[OperationContract]
[WebGet(UriTemplate = "usertoken/populate")]
public ClientUserToken PopulateUserToken()
{
  return HttpContext.Current.Session["userToken"] as UserToken;
}

[AspNetCacheProfile("NoCachingProfile")] を各メソッドに追加して、

<outputCacheSettings>
    <outputCacheProfiles>
        <add name="NoCachingProfile" noStore="true" duration="0" varyByParam="none" enabled="false"/>
    </outputCacheProfiles>
</outputCacheSettings>

web.configに追加しますが、これをすべての操作に追加する必要は避けたいと思います. これを行うためのIIS設定はありますか、それともコード駆動にする必要がありますか? IE だけで発生するのはなぜですか?

4

1 に答える 1

0

これはサービスの問題ではなく、IE の問題です。ブラウザーは何も送信しなかったため、Fiddler には何も表示されません。ブラウザーは最後にキャッシュされた応答を使用しています。可能であれば Post を使用し、それ以外の場合は、各 Get リクエストを次のように異なるもの url: "usertoken/populate?" + new Date().getTime() にします。

于 2012-05-30T17:34:02.660 に答える