4

私はこのようにxmlファイルからデータを読み取ります:

StringBuilder str = new StringBuilder();
str.Append("<News>");

XDocument xmlDoc = XDocument.Load(path);
var q = xmlDoc.Descendants("news")
 .Where(x => x.Descendants("language_id") != null && x.Descendants("language_id").First().Value == "2")
 .Select(x => x);

foreach (var st in q)
{
    str.Append(st.ToString(SaveOptions.DisableFormatting) + " ");
}

str.Append("</News>");
return str.ToString();

しかし、最近、xmlファイルが更新されたときに注意します。それはまだ古いものからデータを読み取ります!!! キャッシングコピーから読み取るかどうかはわかりません。

リセットするiisとデータが更新されます。

この問題を解決するにはどうすればよいですか?

4

2 に答える 2

5

おそらく、DefaultCachePolicyを設定する必要があります。

WebRequest.DefaultCachePolicy = new
RequestCachePolicy(RequestCacheLevel.Revalidate);
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(myUri);

ここから:http://www.pcreview.co.uk/forums/stop-xmldocument-load-using-cached-data-t3489418.html

于 2012-09-03T09:46:28.180 に答える
3

クイックハック。

pathURLを含む文字列であると仮定して、変更します

XDocument xmlDoc = XDocument.Load(path);

XDocument xmlDoc = XDocument.Load(path + "?" + Guid.NewGuid().ToString(););

これにより、進行中の中間キャッシュが無効になり?、URLでのを使用しても、データを要求しているサーバーが混乱することはありません。

(これは、ランダムな文字列を取得するための簡単な方法です。必要に応じて、クラスGuid.NewGuid()を簡単に使用することも、同様の方法で使用することもできます。)RandomDateTime.Now.Ticks

于 2012-09-12T16:15:04.900 に答える