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