我正在使用一些代码,我试图通过加载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);