我已为我的项目安装了Windows服务,当我启动该服务时会弹出此错误。
错误1503服务未及时响应启动或控制请求
但是,当我在 Visual Studio代码中调试时,此项目工作正常,但是当我使用 Visual Studio 2017 创建并启动服务时,请遵循此{{3}和
我尝试了很少的解决方案,但错误仍然相同。这是我尝试过的解决方案。
Use CCCleaner to scan and fix issues
下面的Logservice可以将String写入文本文件,在那里我分析服务运行直到哪个部分失败。该服务只能运行到LogService(" 3");然后它从端口接收字节失败。
以下是代码:
public Service1()
{
InitializeComponent();
LogService("server");
try
{
LogService("1");
IPEndPoint anyIP = new IPEndPoint(IPAddress.Any, 0);
UdpClient udpListener = new UdpClient(514);
byte[] bReceive; string sReceive; string sourceIP;
Console.WriteLine("Waiting...");
/* Main Loop */
/* Listen for incoming data on udp port 514 (default for SysLog events) */
while (true)
{
LogService("2");
try
{
LogService("3");
bReceive = udpListener.Receive(ref anyIP);
LogService("4");
/* Convert incoming data from bytes to ASCII */
sReceive = Encoding.ASCII.GetString(bReceive);
LogService(sReceive);
/* Get the IP of the device sending the syslog */
sourceIP = anyIP.Address.ToString();
LogService("5");
LogService(sourceIP);
new Thread(new logHandler(sourceIP, sReceive).handleLog).Start();
/* Start a new thread to handle received syslog event */
LogService(sReceive);
}
catch (Exception ex) { Console.WriteLine(ex.ToString()); }
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
throw ex;
}
}
由于代码或其他原因,我不确定是否发生错误
更新 请参阅此Modify ServicesPipeTimeout to 180000,我试图关闭防火墙以接收所有连接,但错误仍然保持不变。
在我将udpListener.Client.Bind(anyIP);
添加到代码中之后,我的项目成功地从服务器中侦听了数据,但经过一些修改后,它再次无法运行。我不确定Bind()是否只使代码工作一次。
答案 0 :(得分:0)
这是我解决错误的方式,请参阅此post。无论如何,我不完全理解这背后的过程,如果有人在解释这个解决方案时有一些很好的例子或链接,请不要犹豫,在下面发表评论。
protected override void OnStart(string[] args)
{
LogService("Service started");
NewThread = new Thread(runSysLog);
NewThread.Start();
}
protected override void OnStop()
{
LogService("Service stopped");
StopRequest.Set();
//NewThread.Join();
}
public void runSysLog()
{
try
{
AutoResetEvent StopRequest = new AutoResetEvent(false);
/* Main Loop */
while (true)
{
if (StopRequest.WaitOne(5000)) return;
try
{
//while (udpListener.Available > 0)
if (udpListener.Available > 0)
{
//Some code here
}
}
catch (Exception ex)
{
LogService("Whileloop exception: " +ex.ToString());
throw ex;
}
}
}
catch (Exception ex)
{
LogService("Run Sys Log Exception: " +ex.ToString());
throw ex;
}
}