我试图在我的自定义ServiceHost中覆盖ApplyConfiguration方法,以从数据库而不是app.config中读取配置。理想情况下,我希望能够做到这样的事情:
配置config = GetConfigFromMyDatabase(...);
ServiceModelSectionGroup serviceModel = ServiceModelSectionGroup.GetSectionGroup(config);
如果没有编写临时app.config文件,有没有办法做到这一点?
答案 0 :(得分:4)
如何使用:
System.Configuration.ConfigurationManager.OpenExeConfiguration(string exePath)
那应该让你打开一个任意的app.config文件。
答案 1 :(得分:1)
如果您正在编写自定义ServiceHost,则不需要单独的AppDomain。
ServiceHost具有您可以覆盖的ApplyConfiguration方法。您可以从任何地方加载配置。
See here有关概述该技术的相关文章。
答案 2 :(得分:-1)
尽管您不想编写临时配置文件,但最好的方法是在单独的AppDomain中托管您的服务。
在创建AppDomain之前,从数据库中获取配置并将其写入文件系统,然后在创建AppDomain时将其指向您从数据库中检索的临时配置文件,作为其配置源。
当然,数据库中的配置要么必须是完整的app.config文件,要么必须将其与某种模板配置文件合并,该文件中包含任何其他非serviceModel配置位。你的应用程序的其余部分。
以这种方式实现它是一个非常简洁的解决方案,并且运行良好(之前已经使用过它)。