gpt4 book ai didi

c# - SelectSingleNode 中的 StackOverflow

转载 作者:太空宇宙 更新时间:2023-11-03 22:42:10 24 4
gpt4 key购买 nike

您好,我有在 app.exe.config 文件中创建/更新字段的功能

        public static void UpdateConfig(string FieldName, string FieldValue, ConfigSelector SectionName = ConfigSelector.AppSettings)
{
switch (SectionName)
{
case ConfigSelector.Execption:
{
// MessageBox.Show("gg");
var xmlDoc = new XmlDocument();
xmlDoc.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
if (xmlDoc.SelectSingleNode("configuration/Execption") != null)
{

if (xmlDoc.SelectSingleNode("configuration/Execption/List") != null)
{
// create new node <add key="Region" value="Canterbury" />
var nodeRegion = xmlDoc.CreateElement("add");
nodeRegion.SetAttribute("key", FieldName);
nodeRegion.SetAttribute("value", FieldValue);

xmlDoc.SelectSingleNode("configuration/Execption/List").AppendChild(nodeRegion);
}
else
{
var List = xmlDoc.CreateElement("List");
xmlDoc.SelectSingleNode("configuration/Execption").AppendChild(List);
UpdateConfig(FieldName, FieldValue, SectionName);
}
}
else
{
var List = xmlDoc.CreateElement("Execption");
xmlDoc.SelectSingleNode("configuration").AppendChild(List);
UpdateConfig(FieldName, FieldValue, SectionName);
}

xmlDoc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);

ConfigurationManager.RefreshSection("Execption/List");
break;
}
}
}

功能首先检查xpath配置/执行是否存在,如果不存在则创建此路径并再次调用函数,第二次检查配置/执行/列表路径是否存在如果不存在则创建路径并再次调用函数,第三次添加必填字段,即字段名和字段值,

但我得到了 System.StackOverflowException:

if (xmlDoc.SelectSingleNode("configuration/Execption") != null)

我错过了什么吗?

最佳答案

您正在递归调用 UpdateConfig,并已将完全相同的参数传递给它

UpdateConfig(FieldName, FieldValue, SectionName);

由于递归调用发生在 xmlDoc.Save() 之前,因此它始终对相同的内容起作用。

在执行递归调用之前保存应该可以解决问题。

关于c# - SelectSingleNode 中的 StackOverflow,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51654327/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com