1

我用 C# 编写了一个小 Windows 服务,它应该侦听特定端口并根据请求执行某些操作。

我也这样写了Main:

using System;
using System.ServiceProcess;

namespace AutoDeployService
{
    public static class WindowsServiceController
    {
        private static void Main(string[] args)
        {
            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[] 
            { 
                new AutoDeployService() 
            };

            if (Environment.UserInteractive)
            {
                new AutoDeployService().ConsoleRun();
            }
            else
            {
                System.Diagnostics.Debugger.Break();
                ServiceBase.Run(ServicesToRun);
            }
        }
    }
}

所以我可以使用控制台启动服务,也可以不使用。当我将程序作为控制台应用程序启动时,它工作正常!

如果我使用“InstallUtil.exe”安装服务,它会完美安装并出现在服务列表中。但是当我尝试启动服务时,它会在大约半分钟或更长时间后给我这个消息:

服务未及时响应启动或控制请求。

在我研究了 www 中的这个错误之后,我发现 OnStart-Method 可能需要很长时间,现在我的 OnStart-Method 看起来像:

        protected override void OnStart(string[] args)
        {
            base.OnStart(args);
            var initializeThread = new Thread(new ThreadStart(Initialize));
            initializeThread.Start();
        }

所以我希望有人能帮助我。

问候

编辑:似乎服务在我用 servicemanager 启动他之后启动了,但是在 servicemanager 中出现了上面的错误并且它被定义为未启动。

事件簿:

Name der fehlerhaften Anwendung: AutoDeployService.exe, Version: 1.0.0.0, Zeitstempel: 0x5459e290 Name des fehlerhaften Moduls: unknown, Version: 0.0.0.0, Zeitstempel: 0x00000000 Ausnahmecode: 0x00000000 Fehleroffset: 0x0039010b ID des fehlerhaften Prozesses: 0xa0c Startzeit der fehlerhaften Anwendung : 0x01cff8d816b830d8 Pfad der fehlerhaften Anwendung: C:\Users* username* \Desktop\AutoDeploy\AutoDeployService\bin\Debug\AutoDeployService.exe Pfad des fehlerhaften 模块: 未知 Berichtskennung: 5d636ccf-64cb-11e4-b5d1-0050568bc9b7

编辑:

如果我启动服务,服务似乎没有进入 OnStart 方法,因为他没有创建文件夹。

4

2 回答 2

1

似乎有些误会;虽然可执行文件可以从命令行启动,但服务本身不能从命令行启动。此外,可以在此处找到有关创建服务的教程。

于 2014-11-05T09:07:52.050 回答
0

谢谢您的帮助。

我发现我的错误是使用以下命令附加调试器:

Debugger.Launch().

错误出现在我的应用程序的线程中。

于 2014-11-05T10:08:33.547 回答