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

快速破解。

假设path是一个包含 URL 的字符串,更改

XDocument xmlDoc = XDocument.Load(path);

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

这将破坏正在进行的任何中间缓存,并且?在 URL 中使用 不应扰乱您请求数据的服务器。

Guid.NewGuid()这只是获取随机字符串的一种快速方法。如果您愿意,可以轻松使用Random该类或DateTime.Now.Ticks以类似方式。)

于 2012-09-12T16:15:04.900 回答