错误1503服务未及时响应启动或控制请求

时间:2018-02-02 05:05:28

标签: c# windows-services visual-studio-code visual-studio-2017

我已为我的项目安装了Windows服务,当我启动该服务时会弹出此错误。

  

错误1503服务未及时响应启动或控制请求

但是,当我在 Visual Studio代码中调试时,此项目工作正常,但是当我使用 Visual Studio 2017 创建并启动服务时,请遵循此{{3}和

我尝试了很少的解决方案,但错误仍然相同。这是我尝试过的解决方案。

tutorial

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()是否只使代码工作一次。

1 个答案:

答案 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;
        }
    }