-1

私が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();
    }
}
4

1 に答える 1

2

サービスプロジェクトのProgram.csファイルに次のように追加します

Debugger.Launch();

の最初の行として

private static void Main(string[] args)

サービスを開始すると、デバッグ方法を尋ねられ、開いているVisualStudioリファレンスを選択します。そうすれば、何が問題を引き起こしているのかをよりよく理解できます。

また、終わったらその声明を出すことを忘れないでください!

于 2013-03-06T14:27:23.787 に答える