【问题标题】:Update/Refresh config file更新/刷新配置文件
【发布时间】:2023-04-29 01:48:01
【问题描述】:

我有一个小程序,我在其中将粘贴的内容从 A 复制到 PC 上的 B。目录路径写在配置中,当我(在应用程序中)更改文本框中的目录时,它正在更新配置文件。我检查了它,该值立即在适当的键处重写。当我关闭应用程序并重新打开它时,它会更新到先前更改的目录路径,但我不想关闭应用程序并重新打开它。我有一个组合框,我希望它在组合框重新选择事件触发后立即更新。但是在运行时(尽管它已经在配置中更改)它不会更新应用程序中显示的目录路径。

我通读并尝试了我在网上找到的所有内容,遗憾的是没有任何帮助。不是每一种

ConfigurationManager.RefreshSection("appSettings");

这是我的配置:

<appSettings file="">
<clear />
<add key="SourcepathClient" value="D:\xxx" />
<add key="SourcepathWin32" value="D:\xxx" />
<add key="DestinationpathUpdatePackages" value="D:\xxx" />
<add key="DestinationpathClient" value="D:\xxx" />
<add key="5_9_0-DestinationpathClient" value="D:\xxxt" />
<add key="5_9_0-DestinationpathUpdatePackages" value="D:\xxx" />
<add key="5_9_1-DestinationpathClient" value="D:\xxx" />
<add key="5_9_1-DestinationpathUpdatePackages" value="D:xxx" />
<add key="5_9_2-DestinationpathClient" value="D:\xxx" />
<add key="5_9_2-DestinationpathUpdatePackages" value="D:\xxx" />
</appSettings>

这是代码:

Configuration config = ConfigurationManager.OpenExeConfiguration(System.IO.Path.Combine(Directory.GetCurrentDirectory(), "UpdatePackager.exe")); 
config.AppSettings.Settings[ComboBoxVersion.Text + "-DestinationpathClient"].Value = TextBoxDestinationpathClient.Text;
config.AppSettings.Settings[ComboBoxVersion.Text + "-DestinationpathUpdatePackages"].Value = TextBoxDestinationpathUpdatePackage.Text; 
config.AppSettings.SectionInformation.ForceSave = true;
config.Save(ConfigurationSaveMode.Full);
ConfigurationManager.RefreshSection("appSettings");

我希望有人可以帮助我。 问候

【问题讨论】:

  • 也许可以尝试编写自己的配置 xml 文件?

标签: c# directory app-config updating


【解决方案1】:

我认为与您的访问相关的代码没有问题,如果您在 IIS 中运行应用程序并从 Visual Studio 运行测试示例,它会有所不同。 ASP.NET 进程标识是 IIS 帐户、ASPNET 或 NETWORK SERVICES(取决于 IIS 版本)。

可能需要授予 ASPNET 或 NETWORK SERVICES Modify 对 web.config 所在文件夹的访问权限。

【讨论】: