为了账号安全,请及时绑定邮箱和手机立即绑定

使用ConfigurationManager从任意位置加载配置

使用ConfigurationManager从任意位置加载配置

缥缈止盈 2019-08-02 17:02:20
使用ConfigurationManager从任意位置加载配置我正在开发一个数据访问组件,它将在一个包含经典ASP和ASP.NET页面的网站中使用,并且需要一种很好的方法来管理其配置设置。我想用一种习俗ConfigurationSection对于ASP.NET页面来说,这非常有用。但是,当通过COM互操作从典型的ASP页面调用组件时,组件并不在ASP.NET请求的上下文中运行,因此不了解web.config。有没有办法告诉我们ConfigurationManager只需从任意路径加载配置(例如,..\web.config如果我的程序集位于/bin文件夹)?如果有,那么我认为如果默认的话,我的组件可以回到那个位置。ConfigurationManager.GetSection回报null我的定制区。任何其他方法都是欢迎的!
查看完整描述

3 回答

?
蝴蝶刀刀

TA贡献1801条经验 获得超8个赞

System.Configuration.ConfigurationFileMap fileMap = new ConfigurationFileMap(strConfigPath); //Path to your config file
System.Configuration.Configuration configuration = System.Configuration.ConfigurationManager.OpenMappedMachineConfiguration(fileMap);





查看完整回答
反对 回复 2019-08-03
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

另一种解决方案是覆盖默认环境配置文件路径。

我发现它是非平凡路径配置文件加载的最佳解决方案,特别是将配置文件附加到DLL的最佳方法。

AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", <Full_Path_To_The_Configuration_File>);

例子:

AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE", @"C:\Shared\app.config");

详情请参阅这个博客.

此外,另一个答案有一个很好的解决方案,包括刷新app配置的代码和IDisposable对象将其重置回原来的状态。使用此解决方案,可以使临时应用程序配置范围保持在以下范围:

using(AppConfig.Change(tempFileName)){
    // tempFileName is used for the app config during this context}



查看完整回答
反对 回复 2019-08-03
  • 3 回答
  • 0 关注
  • 464 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信