2010-12-30 2 views
4

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

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

Поиск SO, я нашел possible solution, который сказал, чтобы определить baseAddress при создании экземпляра ServiceHost, но это тоже не помогло.

Мой ServiceHost определяется как:

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 начнется, пока все указанные шаги будут соблюдены. Я что-то упускаю, и это, вероятно, прямо передо мной. Пожалуйста помоги!

ответ

8

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

+0

Я не знал, что это происходит. Спасибо за указатель! – norepro

+0

Я не знаю, как это произошло, но как только я завернул попытку/поймал его (и зарегистрировал исключение), служба осталась на начальном этапе, и никакая ошибка не была зарегистрирована. Теперь я могу перейти к baseAddress. Странный. Благодаря! – norepro

+0

Спасибо, это сводило меня с ума. Обернул его в попытку поймать, и все работает. –

1

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

1

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

System.Diagnostics.Debugger.Launch(); 

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