有没有办法从代码中检索configSource?我创立了How to programmatically retrieve the configSource Location from config file,但所有答案都错了。
我有以下配置:
<configuration>
<appSettings configSource="appsettings.config"/>
</configuration>
当我尝试调用以下代码时:
var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var file = config.AppSettings.File;
file
始终为空。同样适用于ConfigurationManager.AppSettings["configSource"]
。我认为在.NET 4中有些变化,因为答案是旧的。
我也试过了config.AppSettings.SectionInformation.ConfigSource
,但它也是空的。
我需要此路径来启用appSettings
的监控。您可以阅读更多内容:How to discover that appsettings changed in C#?
答案 0 :(得分:3)
我有一些问题,但我终于找到了答案。
当配置文件如下所示:
<configuration>
<appSettings file="appsettings.config"/>
</configuration>
上面的代码工作正常:
var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var file = config.AppSettings.File;
但是当配置文件是(它与上面相同但语法不同)时:
<configuration>
<appSettings configSource="appsettings.config"/> <!-- configSource instead of file -->
</configuration>
我必须使用以下内容:
var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var file = config.AppSettings.SectionInformation.ConfigSource;
所以我必须检查config.AppSettings.SectionInformation.ConfigSource
和config.AppSettings.File
是不是空字符串并监视正确的字符串。