我需要创建许多 Windows 服务来托管许多 WCF 服务,以便我可以停止其中一个服务(例如更新它)并保持另一个服务运行。

由于我不想为我拥有的每个 WCF 服务创建一个 Windows 服务,因此我尝试创建一个 C# 应用程序,该应用程序可以将自身注册为 Windows 服务,但具有不同的参数(当然还有服务名称)。

例如这样称呼它:

MyService.exe /install WcfService1.dll
MyService.exe /install WcfService2.dll

这将创建两个不同的 Windows 服务,如下所示:

WcfService1 -> MyService.exe /run WcfService1.dll
WcfService2 -> MyService.exe /run WcfService2.dll

除了直接编辑注册表之外,我找不到其他方法来执行此操作。

有帮助吗?

解决方案

我找到了一个更好的方法来做到这一点:执行程序

sc.exe create WcfService1 binPath= "MyService.exe /run WcfService1.dll"

所以我只需要创建一个 bat/cmd 来启动这个命令。

其他提示

就其本质而言,服务被设计为处理特定事物的首选流程,拥有多个实例通常不是一个好主意。然而,你可以做你想做的事;例如,您可以同时运行多个 SQL Server 实例。

读一读 . 。基本上,您的服务安装程序可以接受一些命令行或其他可配置参数,告诉它应该在 Windows 中将自己注册为服务的名称。这通常是根据服务安装程序和服务可执行文件的属性自动进行的,但所有这些也可以动态设置。更改名称,也就更改了服务注册。服务的名称应该(AFAIK)可以由作为服务运行的可执行文件检查,这可以告诉它它负责的 WCF 服务。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top