Windows服务:服务无法启动。服务进程无法连接到服务控制器

时间:2018-09-04 07:05:16

标签: c# windows-services

我搜寻了解决方案的敌人,但没有得到。 这是Windows服务的代码。

 protected override void OnStart(string[] args)
    {
        Debugger.Launch();
        try {
           AsynchronousSocketListener.StartListening();



            // Log an event to indicate successful start.

            EventLog.WriteEntry("Successful start.", EventLogEntryType.Information);

        }
        catch(Exception ex)
        {
            // Log the exception.
            EventLog.WriteEntry(ex.Message, EventLogEntryType.Error);


        }
    }

这是类AsynchronousSocketListner

 static string constr = "Integrated Security=SSPI;Persist Security Info=False;Data Source=WIN-OTVR1M4I567;Initial Catalog=CresijCam";

    //string test = constr;

    // Thread signal.  
    public static  ManualResetEvent allDone = new ManualResetEvent(false);

    private  AsynchronousSocketListener()
    {

    }
    public static void StartListening()
    {
        // Establish the local endpoint for the socket.  
        // The DNS name of the computer  

        IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Any, 1200);

        // Create a TCP/IP socket.  
        Socket listener = new Socket(AddressFamily.InterNetwork,
            SocketType.Stream, ProtocolType.Tcp);

        // Bind the socket to the local endpoint and listen for incoming connections.  
        try
        {
            listener.Bind(localEndPoint);
            listener.Listen(200);

            while (true)
            {
                // Set the event to nonsignaled state.  
                 allDone.Reset();

                // Start an asynchronous socket to listen for connections.  

                listener.BeginAccept(
                    new AsyncCallback(AcceptCallback),
                    listener);

                // Wait until a connection is made before continuing.  
                 allDone.WaitOne();
            }

        }
        catch (Exception e)
        {
            string me = e.Message;

        }

    }

我每次都收到不同的错误消息:

  

在等待TCPService服务的事务响应时达到了超时(30000毫秒)。

     

服务无法启动。服务进程无法连接到服务控制器

我不知道我要从哪里来的错误来了。我知道服务尚未运行的一件事。并且在此方法中startListening()。我使用Debugger.launch()进行了调试。但是我没有达到特定的要求。 我还认为这与某个地方的TCP有关,但不能肯定。

同一代码处于控制台项目的工作状态。 我不知道还有什么其他代码在这里。但是请让我知道是否需要进一步的细节。

1 个答案:

答案 0 :(得分:1)

这个简单的答案是您的AsynchronousSocketListener不是异步或线程的,也不是任何类似的东西。本质上,您的服务启动正在超时,并且永远不会终止

EventLog.WriteEntry("Successful start.", EventLogEntryType.Information);

因为它本质上是永远封锁


此错误说明了一切

  

在等待超时时达到了超时(30000毫秒)   来自TCPService服务的事务响应。


OnStart仅应开始工作。这通常意味着生成新线程来执行实际工作。简而言之,预计OnStart将迅速完成。

您需要重构代码以在新线程或新任务中运行AsynchronousSocketListener