我的应用程序从xml文件中读取过时的数据

时间:2012-09-03 09:39:31

标签: c# asp.net xml telerik linq-to-xml

我从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时,它会更新数据。

如何解决这个问题?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:3)

快速入侵。

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

XDocument xmlDoc = XDocument.Load(path);

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

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

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