【发布时间】:2012-08-08 18:13:58
【问题描述】:
我想部署一个提供 Web 服务的 exe,并且能够多次启动它(每次都作为单独的 Windows 服务)。每个 exe 实例都需要能够加载不同的配置文件(例如,它可以侦听不同的端口或使用不同的数据库)。
理想情况下,我不想将 exe 安装在多个文件夹中,只要有多个配置文件即可。
但是似乎没有办法找到 Windows 正在启动的服务名称。
我看过 How can a Windows Service determine its ServiceName? 但它似乎对我不起作用,因为在启动期间,正在启动的服务的进程 ID 为 0。
我想我问得太早了。我的代码执行以下操作:
Main设置当前目录并构造一个WebService对象(ServiceBase的子类)
WebService 对象构造函数现在需要设置其 ServiceName 属性,并使用How can a Windows Service determine its ServiceName? 中的代码来尝试找到正确的名称。但是此时正确的servicename的processid还是0。
接着,Main 将构建一个包含 WebService 对象的 (1) ServiceBase 数组,并在该数组上调用 ServiceBase.Run。此时服务名称需要正确,因为一旦服务运行,它可能无法更改。
【问题讨论】: