在服务器上安装同一Windows服务的多个实例
因此,我们已经制作了一个Windows服务,可将数据提供给客户端应用程序,并且一切进展顺利。客户端提出了一个有趣的配置请求,该请求要求该服务的两个实例在同一服务器上运行,并配置为指向单独的数据库。 到目前为止,我还没有做到这一点,并希望我的stackoverflow同行成员可能对为什么给出一些提示。 当前设置: 我已经设置了包含Windows服务的项目,从现在开始我们将其称为AppService,而ProjectInstaller.cs文件将处理自定义安装步骤,以基于App.config中的键来设置服务名称,如下所示: : this.serviceInstaller1.ServiceName = Util.ServiceName; this.serviceInstaller1.DisplayName = Util.ServiceName; this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalSystem; 在这种情况下,Util只是一个静态类,可以从配置文件中加载服务名称。 从这里开始,我尝试了两种不同的方法来安装两个服务,并且都以相同的方式失败了。 第一种方法是简单地安装服务的第一个副本,复制安装的目录并重命名它,然后在修改应用程序配置以更改所需的服务名称后运行以下命令: InstallUtil.exe /i AppService.exe 如果不起作用,我尝试创建第二个安装程序项目,编辑配置文件并构建第二个安装程序。当我运行安装程序时,它运行良好,但该服务未显示在services.msc中,因此我针对第二个已安装的代码库运行了先前的命令。 两次我都从InstallUtil收到以下输出(仅相关部分): 运行事务处理的安装。 开始安装的安装阶段。 正在安装service App Service Two ... Service App Service Two已成功安装。在日志应用程序中创建EventLog源App Service二... 在安装阶段发生异常。System.NullReferenceException:对象引用未设置为对象的实例。 安装的回滚阶段开始。 将事件日志恢复到源应用程序服务二的先前状态。正在从系统中删除Service App服务二...已成功从系统中删除Service App服务二。 回滚阶段已成功完成。 事务处理安装已完成。安装失败,并且已执行回滚。 很抱歉,冗长的帖子,希望确保有足够的相关信息。到目前为止,我感到很困惑的一点是,它指出该服务的安装成功完成,并且只有在它创建EventLog源之后才抛出NullReferenceException。因此,如果有人知道我在做什么错或有更好的方法,将不胜感激。