2012-04-25 153 views
5

我有一个Windows服务,我正在创建,我想知道哪些选项可用,为了让我让开发人员配置服务。允许配置Windows服务

该服务是一个超大型开源项目的一部分,因此该服务将安装在许多不同的机器上。

正常我会为此使用一个web/app.config,但我不确定这是否可能。

因此,我期待着别人如何处理这种情况。

回答

6

你按照你的预期去做。您可以使用app.config,在项目建成时将重命名为<exeName>.config,然后012xx将由名为<exeName>的服务读取。

设置以分层方式应用,可能来自机器上的其他配置文件,例如machine.config。你可以阅读有关how configuration is handled on MSDN

编辑

在回应评论:在启动时(对于PERF原因)服务将只读取配置。如果你想稍后重新加载配置文件,你需要自己处理,我想。

您可以读取配置文件的上次修改日期/时间,以确定文件是否已更改,或者设置file system watcher,然后通知配置管理器在下次读取时重新加载该部分,方法是呼叫ConfigurationManager.RefreshSection("appSettings")当你下次访问它时,该部分将从磁盘重新加载。请参阅ConfigurationManager MSDN docs

+0

同意app.config,无论如何,我自己创建所有WCF主机与Windows服务和相关的app.config – rhapsodyn 2012-04-25 11:03:42

+1

我也想使用配置文件,但我有一个子问题,当服务运行时,你可以修改配置文件,新的设置将被加载到服务中,还是必须停止/开始阅读新的设置?例如连接字符串。 – harag 2012-04-25 13:05:46

+0

@harag我更新了答案,以包含对评论的回复,但实际上你应该问自己的问题 – 2012-04-25 17:28:54

4

您可以使用与该服务的exe具有相同名称的.config文件。

如果你的服务作为MyService.exe运行,它的配置文件将是MyService.exe.config。

在Visual Studio中,只需添加一个应用程序配置文件即可。这会将一个app.config文件添加到项目中。

然后,您可以使用ConfigurationManager类访问像AppSettings和ConnectionStrings之类的东西,就像使用ASP.Net应用程序一样。

相关问题