Служба WCF по-прежнему вызывается при остановке службы Windows - PullRequest
0 голосов
/ 02 июня 2011

Я написал службу Windows в C # .NET. Эта служба Windows содержит службу WCF. Затем я использую новый ServiceHost в OnStart службы Windows для прослушивания сообщений для службы WCF. И закройте этот ServiceHost в OnStop.

Когда служба работает, я могу нормально вызывать службу WCF. Однако затем я останавливаю службу, но все равно могу вызвать службу WCF. Я не ожидал, что это произойдет. Что происходит?

Код OnStart и OnStop ниже

    protected override void OnStart(string[] args)
    {
        if (serviceHost != null)
        {
            serviceHost.Close();
        }

        serviceHost = new ServiceHost(typeof(MyService));

        // Open the ServiceHostBase to create listeners and start 
        // listening for messages.
        serviceHost.Open();
    }

    protected override void OnStop()
    {
        if (serviceHost != null)
        {
            serviceHost.Close();
            serviceHost = null;
        }
    }

Ответы [ 2 ]

0 голосов
/ 03 июня 2011

Я теперь решил это и думал, что обновлю с ответом. Хотя я сомневаюсь, что кто-то еще будет таким глупым;)

Я добавил ссылку на свое клиентское приложение, щелкнув правой кнопкой мыши по проекту и выбрав «Добавить ссылку» вместо «Добавить ссылку на службу». Я до сих пор не уверен, почему это позволяет вызывать службу, когда она не работает, но теперь я добавил ее в качестве ссылки на службу, все работает как положено.

Спасибо всем за участие.

0 голосов
/ 02 июня 2011

Ваш метод OnStop выглядит примерно так:

protected override void OnStop()
{
  if (serviceHost != null)
  {
      try {
          serviceHost.Close();
      }catch{
          //could throw an exception if it is in a bad state
      }finally{
          serviceHost = null;
      }
  }
}

Второе, что нужно проверить, это то, что ваш OnStop вызывается, он не будет вызывать stop, если CanStop flag false.

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