我有一个几个月前开发的 Windows 服务应用程序,到目前为止,它在一个遥远的 Windows Server 2012 上运行完美。但是在一个小的更新之后,我不得不在服务器上重新安装它,现在,每次我尝试运行 InstallUtil这个服务器,我得到一个错误。这是完整的命令行对话框:
安装程序集'c:\Program Files\My Company\MyServiceApp\MyServiceApp.exe'。受影响的参数是:
logtoconsole =
程序集路径 = c:\Program Files\My Company\MyServiceApp\MyServiceApp.exe
日志文件 = c:\Program Files\My Company\MyServiceApp\MyServiceApp.InstallLog正在安装服务 SendHistoryService...
服务 SendHistoryService 已成功安装。
在日志应用程序中创建 EventLog 源 SendHistoryService...
System.ServiceProcess.ServiceInstaller 的 OnAfterInstall 事件处理程序发生异常。
System.InvalidOperationException:无法在计算机“.”上启动服务 SendHistoryService。
引发内部异常 System.ComponentModel.Win32Exception 并显示以下错误消息:服务未及时响应启动或控制请求。
回滚程序集 'c:\Program Files\My Company\MyServiceApp\MyServiceApp.exe'。
受影响的参数是:logtoconsole =
程序集路径 = c:\Program Files\My Company\MyServiceApp\MyServiceApp.exe
日志文件 = c:\Program Files\My Company\MyServiceApp\MyServiceApp.InstallLog将事件日志恢复到源 SendHistoryService 的先前状态。
服务 SendHistoryService 正在从系统中删除...
服务 SendHistoryService 已成功从系统中删除。
请注意,服务安装程序仍然可以在我的本地计算机 (W8.1) 上完美运行。安装程序实际上包含两个独立的服务,称为“SendHistoryService”和“GeneratorService”,但是,如您所见,安装程序在尝试安装第一个时失败。如果它有任何相关性,该过程会在以下行卡住大约 30 秒:
Creating EventLog source SendHistoryService in log Application...
当然,我检查的第一件事是 OnAfterInstall 事件处理程序,但那里似乎没有发生任何错误:
[RunInstaller(true)]
public partial class ProjectInstaller : Installer
{
public ProjectInstaller() { InitializeComponent(); }
private void ServiceProcessInstaller_AfterInstall(object sender, InstallEventArgs e) { }
private void GeneratorServiceInstaller_AfterInstall(object sender, InstallEventArgs e)
{
using (var sc = new ServiceController(GeneratorServiceInstaller.ServiceName))
sc.Start();
}
private void SendHistoryServiceInstaller_AfterInstall(object sender, InstallEventArgs e)
{
using (var sc = new ServiceController(SendHistoryServiceInstaller.ServiceName))
sc.Start();
}
}
我真的无法理解这里发生了什么。有什么线索吗?
编辑:我尝试在 ProjectInstaller 类中注释启动服务的行。现在安装运行正常,但是当我尝试启动服务时,它失败了,我收到以下错误消息:
Windows 无法在本地计算机上启动 SendHistoryService 服务。
错误 1053:服务未及时响应启动或控制请求。