HttpRuntime.Cache を使用して顧客のリストを 60 分間保存する WCF サービスがあります。
次のコマンドを実行すると、3 回目に文字列に「string3」が含まれるのはなぜですか
string mykey = "mykey-1";
List<string> strings = null;
strings = HttpRuntime.Cache[mykey] as List<string>;
if (strings == null)
{
strings = new List<string>();
strings.Add("string1");
strings.Add("string2");
HttpRuntime.Cache[mykey] = strings;
}
else
{
strings.Add("string3");
}
私は期待します:
1 回目: 文字列オブジェクトが null であるため、作成された「string1」と「string2」が追加され、キャッシュされました
2 回目: 文字列がキャッシュから取り出され、「string3」が追加されました
3 回目: 文字列はキャッシュから取り出されましたが、「string3」を再度追加する前に、既に取得されています。
共有メモリか、アプリケーション プール内の何かですか。キャッシュから引き出して変更すると、キャッシュされたバージョンが変更され、再追加する必要がなくなります。
コードをもう一度実行すると、別の「string3」などを取得します
前もって感謝します