我在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方法可能需要很多时间,现在我的OnStart方法看起来像:
protected override void OnStart(string[] args)
{
base.OnStart(args);
var initializeThread = new Thread(new ThreadStart(Initialize));
initializeThread.Start();
}
所以我希望任何人都能帮助我。
问候
编辑:服务似乎是在我用servicemanager启动他之后启动的,但在servicemanager中出现了上面的错误,并将其定义为未启动。
事件日志:
名称:AutoDeployService.exe,版本:1.0.0.0,Zeitstempel:0x5459e290模块名称:未知,版本:0.0.0.0,Zeitstempel:0x0000000澳大利亚货币代码:0x00000000费勒罗夫集:0x0039010b项目ID:0xa0c开始时间:0x01cff8d816b830d8安文东地区:C: \Users*用户名*\Desktop\AutoDeploy\AutoDeployService\bin\Debug\AutoDeployServices.exePfad des fehlerhoften模:未知Berichtskenung:5d636ccf-64cb-11e4-b5d1-000568bc9b7
编辑:
如果我启动该服务,该服务似乎不会进入OnStart方法,因为他不会创建文件夹。
似乎有一些误解;尽管可执行文件可以从命令行启动,但服务本身不能从命令行开始。此外,关于服务创建的教程可以在这里找到。
感谢您的帮助。
我发现我的错误是用以下命令附加调试器:
Debugger.Launch().
错误出现在我的应用程序的线程中。