Служба Windows (служба WCF) останавливается сразу при запуске - PullRequest
4 голосов
/ 30 декабря 2010

Мой вопрос: я не могу перейти к базовому адресу после установки службы, поскольку служба не будет работать (немедленно останавливается). Что мне нужно сделать на сервере или на моей машине, чтобы сделать baseAddress действительным?

Справочная информация. Я пытаюсь узнать, как использовать службы WCF, размещенные в службах Windows. Я прочитал несколько уроков о том, как этого добиться, и это кажется очень простым. Я посмотрел на эту статью MSDN и создал ее шаг за шагом. Я могу установить службу на своей машине и на сервере, но когда я запускаю службу, она немедленно останавливается. Затем я нашел этот учебник , который, по сути, то же самое, но он содержит несколько клиентов, которые используют службу WCF. Я скачал исходный код, скомпилировал, установил, но когда я запустил сервис, он сразу остановился.

В поиске SO я нашел возможное решение , в котором говорится, что нужно определить baseAddress при создании экземпляра ServiceHost, но это тоже не помогло.

Мой сервисHost определен как:

serviceHost = new ServiceHost( typeof( CalculatorService ), 
                 new Uri( "http://localhost:8000/ServiceModelSamples/service" ) );

Имя моей службы, базовый адрес и конечная точка:

<service name="Microsoft.ServiceModel.Samples.CalculatorService" behaviorConfiguration="CalculatorServiceBehavior">
        <host>
            <baseAddresses>
                <add baseAddress="http://localhost:8000/ServiceModelSamples/service"/>
            </baseAddresses>
        </host>
        <endpoint address="" binding="wsHttpBinding" contract="Microsoft.ServiceModel.Samples.ICalculator"/>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
    </service>

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

Ответы [ 3 ]

8 голосов
/ 30 декабря 2010

Когда служба Windows немедленно останавливается, в методе OnStart возникает исключение.Пожалуйста, попробуйте поймать и зарегистрировать это исключение.

2 голосов
/ 29 марта 2017

Позднее, но я нахожу эту строку в качестве первой строки в OnStart очень полезной при отладке сервисов:

System.Diagnostics.Debugger.Launch(); 

Затем вы можете выбрать запущенный сеанс Visual Studio с вашим проектомуже загружен (примечание: может потребоваться, чтобы он работал от имени администратора) и начать пошаговое выполнение кода.

1 голос
/ 28 июля 2015

Раньше у меня была похожая проблема при попытке запустить службу, в которой размещен WCF с перегруженными методами или необязательными параметрами, и компилируется в C # без ошибок, но в WCF это не разрешено ...

...