从AppDomain打开配置文件

时间:2014-01-16 14:18:46

标签: c# .net

请考虑以下事项:

  • 带有配置文件和设置Engine.Url
  • 的Windows服务
  • 该服务将程序集加载到其自己的AppDomain
  • 程序集中的代码需要设置Engine.Url

    string s = ConfigurationManager.AppSettings [“Engine.Url”]

不起作用,s将为null。

然后我试了

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
string engineUrl = config.AppSettings["Engine.Url"];

这不会编译错误: 'System.Configuration.ConfigurationElement.this[System.Configuration.ConfigurationProperty]'由于其保护级别而无法访问

有没有办法从AppDomain中获取标准配置文件?

编辑:

这也不起作用,engineUrl将为null:

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
KeyValueConfigurationElement engineUrl = config.AppSettings.Settings["Engine.Url"];

1 个答案:

答案 0 :(得分:1)

简单回答:是的,但它很不稳定。

你有几个选择。我相信,您可以设置创建AppDomain时使用的ConfigurationFile对象的AppDomainSetup属性。

您可以致电AppDomain.SetData("APP_CONFIG_FILE", path_to_file)(请参阅the related MSDN page