"Служба X имеет нулевые конечные точки приложения", если я не добавляю конечную точку в коде-почему?

я следовал эта статья MSDN для создания службы WCF, размещенной в управляемой службе NT тщательно.

когда я нажимаю "Пуск" в консоли служб, я вижу следующее в средстве просмотра событий:

не удается запустить службу. Система.InvalidOperationException: Служба ' MyServiceNamespace.RequestProcessorImpl ' имеет нулевые конечные точки приложения (без инфраструктуры). Это может быть связано с тем, что для вашего приложения не найден файл конфигурации, или поскольку в файле конфигурации не удалось найти элемент службы, соответствующий имени службы, или поскольку в элементе службы не были определены конечные точки.

Я пытался проверить все возможные причины, которые я мог найти. Вот описание службы в приложении.Файл конфигурации:

 <service name="MyServiceNamespace.RequestProcessorWindowsService"
           behaviorConfiguration="RequestProcessorServiceBehavior">
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8095/RequestProcessorService"/>
      </baseAddresses>
    </host>
    <endpoint address= ""
              binding="wsHttpBinding"
              contract="MyServiceNamespace.IRequestProcessor" />
    <endpoint address="mex"
              binding="mexHttpBinding"
              contract="IMetadataExchange" />
  </service>

все организации являются назвав их имен, так что это не проблема. приложение.Файл конфигурации помещается в binDebug-именно там, где начинается служба NT от.

но когда я меняю свой ServiceBase потомок OnStart() из исходной реализации:

public class RequestProcessorWindowsService : ServiceBase {
    public ServiceHost serviceHost = null;
    //other methods skipped 
    protected override void OnStart(string[] args)
    {
        if( serviceHost != null ) {
       serviceHost.Close();
        }
        serviceHost = new ServiceHost( typeof(RequestProcesssorImpl) );
        serviceHost.Open();
    }
}

к следующему, так что он вызывает AddServiceEndpoint() служба запускается нормально (но я не могу добавить ссылку на нее, поэтому я думаю, что что-то еще идет не так):

public class RequestProcessorWindowsService : ServiceBase {
    public ServiceHost serviceHost = null;
    //other methods skipped 
    protected override void OnStart(string[] args)
    {
        if( serviceHost != null ) {
       serviceHost.Close();
        }
        Uri baseAddress = new Uri("http://localhost:8095/RequestProcessorService");
        serviceHost = new ServiceHost( typeof(RequestProcesssorImpl), baseAddress );
        serviceHost.AddServiceEndpoint( typeof(IRequestProcessor), new BasicHttpBinding(), baseAddress );
        serviceHost.Open();
    }
}

почему мой сервис не запускается при настройке через приложение.Конфиг?

1 ответов


имя службы в файле конфигурации не соответствует классу выполнения сервиса.

файл config должен содержать:

<service name="MyServiceNamespace.RequestProcesssorImpl"