2013-03-06 77 views
-1

当我尝试安装我的C#窗口服务,这是我所得到的,我在赢服务应用程序的新手,请注明,如果你需要进一步的信息,多appritiated:错误安装C#Windows服务

Installing assembly 'C:\BatchFileManagerWinService\PCSBatchFileManagerWinService.exe'. 
Affected parameters are: 
    logtoconsole = 
    assemblypath = C:\BatchFileManagerWinService\PCSBatchFileManagerWinService.exe 
    logfile = C:\BatchFileManagerWinService\PCSBatchFileManagerWinService.InstallLog 
Installing service PCS Batch File Manager... 
Service PCS Batch File Manager has been successfully installed. 
Creating EventLog source PCS Batch File Manager in log Application... 
An exception occurred in the OnAfterInstall event handler of PCSBatchFileManagerWinService.ProjectInstaller. 
System.InvalidOperationException: Cannot start service PCS Batch File Manager on computer '.'. 
The inner exception System.ComponentModel.Win32Exception was thrown with the following error message: 
The service did not respond to the start or control request in a timely fashion. 
Rolling back assembly 'C:\BatchFileManagerWinService\PCSBatchFileManagerWinService.exe'. 
Affected parameters are: 
    logtoconsole = 
    assemblypath = C:\BatchFileManagerWinService\PCSBatchFileManagerWinService.exe 
    logfile = C:\BatchFileManagerWinService\PCSBatchFileManagerWinService.InstallLog 
Restoring event log to previous state for source PCS Batch File Manager. 
Service PCS Batch File Manager is being removed from the system... 
Service PCS Batch File Manager was successfully removed from the system. 

的ProjectInstaller代码如下:

[RunInstaller(true)] 
public partial class ProjectInstaller : System.Configuration.Install.Installer 
{ 
    public ProjectInstaller() 
    { 
     InitializeComponent(); 

     //Read domain/Username and password 
     XmlDocument doc = new XmlDocument(); 
     doc.Load(System.Reflection.Assembly.GetExecutingAssembly().Location + ".config"); 
     XmlElement appSettings = (XmlElement)doc.DocumentElement.GetElementsByTagName("appSettings")[0]; 
     string username = null; 
     string password = null; 
     foreach (XmlElement setting in appSettings.GetElementsByTagName("add")) 
     { 
      string key = setting.GetAttribute("key"); 
      if (key == "WinServInstallUserName") username = setting.GetAttribute("value"); 
      if (key == "WinServInstallPassword") password = setting.GetAttribute("value"); 
     } 
     serviceProcessInstaller1.Account = ServiceAccount.User; 
     serviceProcessInstaller1.Username = username; 
     serviceProcessInstaller1.Password = password; 

     // Start Service 
     this.AfterInstall += new InstallEventHandler(ProjectInstaller_AfterInstall); 
    } 

    void ProjectInstaller_AfterInstall(object sender, InstallEventArgs e) 
    { 
     ServiceController sc = new ServiceController("PCS Batch File Manager"); 
     sc.Start(); 
    } 
} 
+1

Windows服务的启动时间有限(不记得该服务是否可配置)。服务中是否有任何初始化可能会异常长或挂起? – Tim 2013-03-06 14:18:28

+0

发布您的服务的代码,它是无法完成OnStart – istepaniuk 2013-03-06 14:19:43

回答

1

在服务项目的Program.cs文件,添加

Debugger.Launch(); 

private static void Main(string[] args) 

第一线当您启动服务时,它会问你你想怎么调试,挑选您打开Visual Studio的参考。然后,您可以更好地了解导致问题的原因。

另外,当你完成时,不要忘记把这句话拿出来!

+0

感谢您的帮助!调试。罪魁祸首是log4net阻止服务启动。我在AssemblyInfo.cs中评论了代码// [assembly:log4net.Config.XmlConfigurator(ConfigFile =“log4net.config”,Watch = true)]并且服务正在启动。我将删除log4net代码并编写自定义错误日志代码。 – Gaurav 2013-03-06 16:48:26