我尝试安装C#Windows服务时出错

时间:2013-03-06 14:16:56

标签: c# windows-services

当我尝试安装我的C#窗口服务时,这是我得到的,我是win服务应用程序中的新手,如果您需要更多信息,请提及,非常赞赏:

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 个答案:

答案 0 :(得分:2)

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

Debugger.Launch();

作为

中的第一行
private static void Main(string[] args)

当您启动该服务时,它会询问您要如何调试,选择您已打开的Visual Studio引用。然后,您可以更好地了解导致问题的原因。

此外,当你完成时,别忘了把这句话说出来!