Служба Windows запускается в Windows 7, но не запускается в Windows Server 2008 R2 - PullRequest
1 голос
/ 07 марта 2012

Я создал службу wcf, которая развернута через управляемую службу Windows.Функция onstart () создает и открывает tcp-хост для wcf serice.

все отлично работает в Windows 7, но когда я пытаюсь установить службу в Windows Server 2008 R2, служба запускается, а затем останавливаетсяс ошибкой, что иногда службы останавливаются, когда нечего делать.Он запускается под учетной записью сетевой службы.

Я не могу найти ничего полезного в журналах Windows.

Я пытался установить dubug build и вызвать debugger.launch (), но он не работает.Я не могу использовать remode debug, потому что процесс не остается открытым достаточно долго, чтобы я мог подключиться к нему.Я действительно не знаю, что делать.Вот мой код:

    protected override void OnStart(string[] args)
    {
        System.Diagnostics.Debugger.Launch();

        try
        {

            //if (!System.Diagnostics.EventLog.SourceExists("i2s CU Service (eng)"))
            //{
            //    System.Diagnostics.EventLog.CreateEventSource("i2s CU Service", "Application");
            //}
            System.Diagnostics.EventLog.CreateEventSource("i2s CU Service", "Application");
        }
        catch (Exception)
        {
            //throw;
        }
        eventLog1.Source = "i2s CU Service";
        eventLog1.Log = "Application";

        if (serviceHost != null)
        {
            serviceHost.Close();
        }

        System.Configuration.AppSettingsReader reader = new System.Configuration.AppSettingsReader();
        Uri tcpUri = null;
        try
        {
            tcpUri = new Uri((string)reader.GetValue("Uri", typeof(string))); //net.tcp://localhost:8008/i2sServer

            serviceHost = new ServiceHost(typeof(ConcurrentUsers), tcpUri);

            // Create a binding that uses TCP and set the security mode to none.
            NetTcpBinding b = new NetTcpBinding();
            b.Security.Mode = SecurityMode.None;

            // Add an endpoint to the service.
            serviceHost.AddServiceEndpoint(typeof(IConcurrentUsers), b, "");

            // Open the ServiceHostBase to create listeners and start 
            // listening for messages.
            serviceHost.Open();
        }
        catch (Exception ex)
        {
            eventLog1.WriteEntry(ex.Message, EventLogEntryType.Error);
        }


        if (serviceHost.State == CommunicationState.Opened)
        {
            eventLog1.WriteEntry("Service started.", EventLogEntryType.Information);
        }
    }

    protected override void OnStop()
    {
        if (serviceHost != null)
        {
            serviceHost.Close();
            serviceHost = null;
        }
        eventLog1.WriteEntry("Service stopped.", EventLogEntryType.Information);
    }

этот код как отлично работает в Windows 7, но я не могу запустить его на сервере Win 2008 R2.

Заранее спасибо

1 Ответ

0 голосов
/ 07 марта 2012

Измените свое приложение как консольное приложение , а затем запустите его в нужной среде, чтобы можно было легко отлаживать его.

Я уверен, что проблема проявится, как только вы запустите реплику консоли под той же учетной записью, которая назначена вашей службе Windows

...