gpt4 book ai didi

c# - 在不重启应用程序的情况下更改应用程序配置

转载 作者:太空狗 更新时间:2023-10-29 20:22:00 26 4
gpt4 key购买 nike

我有以下问题:我正在将新功能引入应用程序(作为 Windows 服务运行),我想使用某种配置文件条目(myKey )。我可以将配置条目存储在 app.config 中,但如果我想将其从开-> 关更改,否则需要重新启动 Windows 服务,我想避免它。我希望我的应用程序运行并获取配置更改。

问题是:.NET 中是否有解决该问题的内置机制?我想我可以创建自己的配置文件,然后使用 FileSystemWatcher等等...但也许 .NET 允许使用外部配置文件并会重新加载值??

ConfigurationManager.AppSettings["myKey"]

谢谢,帕维尔

编辑 1:感谢您的回复。但是我写了下面的代码片段但它不起作用(我尝试在两个地方创建 appSettingSection:循环之前和内部循环):

static void Main(string[] args)
{
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
// AppSettingsSection appSettingSection = (AppSettingsSection)config.GetSection("appSettings");
for (int i = 0; i < 10; i++)
{
ConfigurationManager.RefreshSection("appSettings");
AppSettingsSection appSettingSection = (AppSettingsSection)config.GetSection("appSettings");
string myConfigData = appSettingSection.Settings["myConfigData"].Value; // still the same value, doesn't get updated
Console.WriteLine();
Console.WriteLine("Using GetSection(string).");
Console.WriteLine("AppSettings section:");
Console.WriteLine(
appSettingSection.SectionInformation.GetRawXml()); // also XML is still the same
Console.ReadLine();
}
}

当应用程序在 Console.ReadLine() 上停止时,我手动编辑配置文件。

最佳答案

加载原始 app.config 文件后,它的值将被缓存,因此如您所知,您必须重新启动应用程序。解决这个问题的方法是创建一个新的配置对象并像这样手动读取 key :

var appConfig = ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
string myConfigData = appConfig.AppSettings.Settings["myConfigData"].Value;

关于c# - 在不重启应用程序的情况下更改应用程序配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5752838/

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