Some Services stop automatically if they are not in use by other services

十年热恋 提交于 2019-12-18 14:09:54

问题


Error "SOME SERVICES STOP AUTOMATICALLY IF THEY ARE NOT IN USE BY OTHER SERVICES" while trying to start a windows service.

I have a service that does not use the windows service config file and uses static properties - it works fine

Now, i make use of app.config file and rebuild my setup project + the service project. Now i install the service and then try to start the service - i get the following error:

SOME SERVICES STOP AUTOMATICALLY IF THEY ARE NOT IN USE BY OTHER SERVICES

Service logs on as local system.

Any input is welcome please! Thanks.


回答1:


This is generally the result of one of two things - either (a) your OnStart() method is throwing an exception or (b) the OnStart() method is not kicking off a thread to do work.

If the problem is (a), then the obvious solution is to debug the service to identify what is going wrong. At a minimum, put a try-catch block around the contents of the OnStart() method and log an error to the system event log when an exception occurs. Then you can see the details in the Windows Event Viewer.

If the problem is (b), then you need to create a thread that actually does something. The thread needs to be a foreground thread (as opposed to a background thread) to prevent the service from shutting down. A typical OnStart() method looks like this:

private System.Threading.Thread _thread;

protected override void OnStart(string[] args)
{
    try
    {
        // Uncomment this line to debug...
        //System.Diagnostics.Debugger.Break();

        // Create the thread object that will do the service's work.
        _thread = new System.Threading.Thread(DoWork);

        // Start the thread.
        _thread.Start();

        // 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);
    }
}

private void DoWork()
{
    // Do the service work here...
}



回答2:


I got this error and it was because the hard drive had filled up. It could be anything that keeps the service from running.




回答3:


I had the same error that was due to dll's not being created when running the installUtil.cmd on my serviceInstaller.msi. To fix this I had to include one of these => <File Id="Interception" Source="$(var.SourceDir)\Microsoft.Practices.Unity.Interception.dll" /> for each dll I was expecting in my project and place it in my Service.wxs file. Like this => <Fragment><DirectoryRef Id="ApplicationDirectory"><Component Id="ServiceID" Guid="$(var.ServiceGuid)"> *here* <closing tags...>. And make sure that all the dll's are included in the installers x copy commands :)

Hope this helps!




回答4:


I got the same error while starting the service. when i go and checked application logs,the error is related to telnet.It means the port for telnet(23) is engaged by another service,That time need to go resource manager and check for the service which is using 23 port and disable that service then the respective service able to start without any issues.



来源:https://stackoverflow.com/questions/6356040/some-services-stop-automatically-if-they-are-not-in-use-by-other-services

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!