我有一个Windows服务,我正在创建,我想知道哪些选项可用,为了让我让开发人员配置服务。允许配置Windows服务
该服务是一个超大型开源项目的一部分,因此该服务将安装在许多不同的机器上。
正常我会为此使用一个web/app.config,但我不确定这是否可能。
因此,我期待着别人如何处理这种情况。
我有一个Windows服务,我正在创建,我想知道哪些选项可用,为了让我让开发人员配置服务。允许配置Windows服务
该服务是一个超大型开源项目的一部分,因此该服务将安装在许多不同的机器上。
正常我会为此使用一个web/app.config,但我不确定这是否可能。
因此,我期待着别人如何处理这种情况。
你按照你的预期去做。您可以使用app.config,在项目建成时将重命名为<exeName>.config
,然后012xx将由名为<exeName>
的服务读取。
设置以分层方式应用,可能来自机器上的其他配置文件,例如machine.config。你可以阅读有关how configuration is handled on MSDN
编辑
在回应评论:在启动时(对于PERF原因)服务将只读取配置。如果你想稍后重新加载配置文件,你需要自己处理,我想。
您可以读取配置文件的上次修改日期/时间,以确定文件是否已更改,或者设置file system watcher,然后通知配置管理器在下次读取时重新加载该部分,方法是呼叫ConfigurationManager.RefreshSection("appSettings")
当你下次访问它时,该部分将从磁盘重新加载。请参阅ConfigurationManager MSDN docs
您可以使用与该服务的exe具有相同名称的.config文件。
如果你的服务作为MyService.exe运行,它的配置文件将是MyService.exe.config。
在Visual Studio中,只需添加一个应用程序配置文件即可。这会将一个app.config文件添加到项目中。
然后,您可以使用ConfigurationManager类访问像AppSettings和ConnectionStrings之类的东西,就像使用ASP.Net应用程序一样。
同意app.config,无论如何,我自己创建所有WCF主机与Windows服务和相关的app.config – rhapsodyn 2012-04-25 11:03:42
我也想使用配置文件,但我有一个子问题,当服务运行时,你可以修改配置文件,新的设置将被加载到服务中,还是必须停止/开始阅读新的设置?例如连接字符串。 – harag 2012-04-25 13:05:46
@harag我更新了答案,以包含对评论的回复,但实际上你应该问自己的问题 – 2012-04-25 17:28:54