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

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

我正在开发一个数据访问组件,它将在一个包含经典ASP和ASP.NET页面的网站中使用,并且需要一种很好的方法来管理其配置设置。

我想用一种习俗ConfigurationSection对于ASP.NET页面来说,这非常有用。但是,当通过COM互操作从典型的ASP页面调用组件时,组件并不在ASP.NET请求的上下文中运行,因此不了解web.config。

有没有办法告诉我们ConfigurationManager只需从任意路径加载配置(例如,..\web.config如果我的程序集位于/bin文件夹)?如果有,那么我认为如果默认的话,我的组件可以回到那个位置。ConfigurationManager.GetSection回报null我的定制区。

任何其他方法都是欢迎的!


缥缈止盈
浏览 465回答 3
3回答

蝴蝶刀刀

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

素胚勾勒不出你

另一种解决方案是覆盖默认环境配置文件路径。我发现它是非平凡路径配置文件加载的最佳解决方案,特别是将配置文件附加到DLL的最佳方法。AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE",&nbsp;<Full_Path_To_The_Configuration_File>);例子:AppDomain.CurrentDomain.SetData("APP_CONFIG_FILE",&nbsp;@"C:\Shared\app.config");详情请参阅这个博客.此外,另一个答案有一个很好的解决方案,包括刷新app配置的代码和IDisposable对象将其重置回原来的状态。使用此解决方案,可以使临时应用程序配置范围保持在以下范围:using(AppConfig.Change(tempFileName)){ &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;tempFileName&nbsp;is&nbsp;used&nbsp;for&nbsp;the&nbsp;app&nbsp;config&nbsp;during&nbsp;this&nbsp;context}
打开App,查看更多内容
随时随地看视频慕课网APP