如何从自定义位置(即从 .NET 中的数据库)读取 app.config
我试图重写自定义 ServiceHost 中的 ApplyConfiguration 方法,以从数据库而不是 app.config 读取配置。 理想情况下,我希望能够执行以下操作:
Configuration config = GetConfigFromMyDatabase(...);
ServiceModelSectionGroup serviceModel = ServiceModelSectionGroup.GetSectionGroup(config);
有没有办法在不编写临时 app.config 文件的情况下执行此操作?
I am trying to override the ApplyConfiguration method in my custom ServiceHost to read the configuration from a database instead of app.config. Ideally I would want to be able to do something like this:
Configuration config = GetConfigFromMyDatabase(...);
ServiceModelSectionGroup serviceModel = ServiceModelSectionGroup.GetSectionGroup(config);
Is there any way to do this without writing a temp app.config file?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用怎么样:
这应该让你打开任意的 app.config 文件。
What about using:
That should let you open an arbitrary app.config file.
如果您正在编写自定义 ServiceHost,则不需要单独的 AppDomain。
ServiceHost 有一个您可以重写的ApplyConfiguration 方法。 您可以从任何您喜欢的地方加载配置。
请参阅此处,获取概述该技术的相关文章。
You do not need a separate AppDomain if you are writing a custom ServiceHost.
The ServiceHost has an ApplyConfiguration method that you can override. You can load config from wherever you like.
See here for a relevant article outlining the technique.
尽管您不想编写临时配置文件,但最好的方法是将您的服务托管在单独的 AppDomain 中。
在创建 AppDomain 之前,从数据库中获取配置并将其写入文件系统,然后在创建 AppDomain 时将其指向从数据库检索的临时配置文件作为配置源。
当然,数据库中的配置要么必须是完整的 app.config 文件,要么您必须将其与某种模板配置文件合并,该模板配置文件中包含任何其他非 serviceModel 配置位,以供其余部分使用。应用程序。
以这种方式实现它是一个非常巧妙的解决方案,并且效果很好(之前已经使用过)。
Despite you're not wanting to write the temp config file, the best way to do this is to host your service(s) in a separate AppDomain.
Before creating your AppDomain, grab the config from the database and write it to the file system, then when you create your AppDomain point it at the temp config file you retrieved from the database as it's config source.
Of course the config in the database would either have to be a full app.config file, or you'd have to merge it with some kind of template config file that had any other non-serviceModel configuration bits in it for the rest of your app.
Implementing it in this way is quite a neat solution, and works well (have used it before).