Xml文档保存调用不会使缓存依赖性失效

时间:2015-06-05 18:18:58

标签: c# asp.net .net

我正在使用一些代码,我试图通过加载XmlDocument然后添加/删除元素来修改XML文件。此文件具有缓存依赖关系集,在我们更改文件时会触发一段代码。如果我在编辑器中编辑文件或使用FileStream,它会使缓存和触发器代码到期,但不会使用XmlDocument.Save方法。知道这背后的原因是什么?

string filePath = Server.MapPath("~/App_Data/ssl.xml");
XmlDocument doc = new XmlDocument();
doc.Load(filePath);
XmlElement ele = doc.CreateElement("directory");
XmlAttribute atr = doc.CreateAttribute("path");
atr.Value = "/";
XmlNode node = doc.DocumentElement.SelectSingleNode("//SecurePages");
node.AppendChild(ele);
doc.Save(filePath);

上面的代码确实会修改文件,但它不会使文件被修改后的缓存项到期。如果手动更改文件或使用FileStream,缓存会过期。

更新 我找到了一个解决方法,如果我使用LoadXml方法加载XmlDocument然后保存调用会触发缓存依赖项。我仍然不确定为什么加载/保存组合不起作用

string filePath = Server.MapPath("~/App_Data/ssl.xml");
XmlDocument doc = new XmlDocument();
doc.LoadXml(ReadTextFile(filePath));
XmlElement ele = doc.CreateElement("directory");
XmlAttribute atr = doc.CreateAttribute("path");
atr.Value = "/";
XmlNode node = doc.DocumentElement.SelectSingleNode("//SecurePages");
node.AppendChild(ele);
doc.Save(filePath);

0 个答案:

没有答案