这是我现在用的方法,感觉挺麻烦的,不知道各位大神有没更好的方法,找到了一个读取的方法,就是加载config文件然后读取,但是感觉不好,不能用ConfigurationManager.ConnectionStrings[“connectionString”]读取
public void saveAPPCONFIG(string skeyname, string skeyvalue)
{
XmlDocument xmldoc = new XmlDocument();
xmldoc.Load(_configPath);
XmlNode xConfiguration = xmldoc["configuration"];
if (xConfiguration["connectionStrings"] == null)
{
XmlNode xConnectionStrings = xmldoc.CreateElement("connectionStrings");
xConfiguration.AppendChild(xConnectionStrings); //向configuration添加connectionStrings节点
XmlNode xConnectionString = xmldoc.CreateElement("add");
XmlAttribute xmlAttrName;
xmlAttrName = xmldoc.CreateAttribute("name");
xmlAttrName.Value = skeyname;
XmlAttribute xmlAttrConnectionString;
xmlAttrConnectionString = xmldoc.CreateAttribute("connectionString");
xmlAttrConnectionString.Value = skeyvalue;
xConnectionString.Attributes.SetNamedItem(xmlAttrName);
xConnectionString.Attributes.SetNamedItem(xmlAttrConnectionString);
xConnectionStrings.AppendChild(xConnectionString);//向xConnectionStrings添加xConnectionString节点
}
xmldoc.Save(_configPath);
}
之后直接用ConfigurationManager.AppSettings[key]读取就行了。
追问这个是修改*.vshost.exe.config的,但是ConfigurationManager读取的是exe.config的,这个我早就试过了,不知道修改*.vshost.exe.config有什么用,一百度全是这个
追答vshost那个文件是VS里调试用的,你用上面的代码,然后直接运行你生成出来的exe就能看到exe.config的更改了。
追问好吧,刚试了下确实是这样,之前一直是在VS里运行,好心塞,非常感谢,还想问下这个怎么做到不重启就能读取最新的配置呢?
追答直接运行exe后,调用上面的UpdateAppConfig,应该不需要重启的,可以直接用ConfigurationManager.AppSettings来读改动后的值。
追问ConfigurationManager.RefreshSection("appSettings");
这段代码不起作用