WCF: Как я могу проверить доступность сервера? - PullRequest
3 голосов
/ 23 марта 2011

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

Я не хочу делать какие-либо реальные серверные вызовы (потому что вызовы могут изменить производственные данные) или создавать пустые {...} методы "Test" на сервере, которые ничего не делают.

Можно ли проверить, что конечная точка сервера WCF присутствует и прослушивает соединения без вызовов методов?

Я пытался:

factory = new ChannelFactory<IServer>())
factory.CreateChannel();

и

factory = new ChannelFactory<IServer>())
factory.Open();

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

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

1 Ответ

5 голосов
/ 23 марта 2011

Нет, нет способа проверить, слушает ли конечная точка, не позвонив ей. Существует множество причин, по которым клиент может не иметь возможности подключиться к конечной точке, поэтому единственный способ убедиться в этом - сделать звонок. Также помните, что конечные точки могут стать недоступными в любой момент, поэтому клиенты должны быть готовы к этому.

Итак, вам доступны два варианта:

  1. В прошлом я добавлял метод Ping в свой сервис, который просто возвращает true. Но это только говорит о том, что услуга доступна в данный момент.
  2. Как более надежный механизм, я бы, вероятно, просто перехватывал соответствующее исключение WCF при каждом вызове службы (EndpointNotFoundException IIRC) и выводил из этого ошибку. Это позволяет вам терпеть сбои, которые могут возникнуть со временем - например, после первоначального подключения.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...