2016-03-07 3 views
-2

Я искал, как узнать, отключена ли служба WCF ИЛИ нет, и я узнал, что единственный способ узнать это - вызвать метод службы WCF. Мы можем создать метод, который возвращает true. В моем случае я хочу показать сообщение, когда служба недоступна клиенту и для других исключений службы WCF, я хочу показать исключения, как есть. Каким должен быть лучший способ?Показать сообщение, когда служба WCF отключена

+0

Используйте блок try/catch вокруг вашего вызова службы wcf. А в блоке catch отображает исключение, вызванное вызовом webservice? Разве вы не ищете что-то более сложное, чем это должно быть? – Sidewinder94

+1

На самом деле вам даже не нужно возвращать 'true'. Сделайте это «пустотой». Если какая-либо его часть не работает, служба, естественно, будет виновата. – MickyD

ответ

1

Эта проблема может быть решена только «на стороне клиента», потому что сервер может отвечать «истинным», только если служба WCF запущена и настроена правильно.

Все остальные случаи должны управляться от клиента.

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

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

+0

Вопрос OP, как я понял, больше напоминал: как отображать исключение как есть. – Sidewinder94

+0

@ Sidewinder94 Существуют особые исключения для «Destination unreachable» в WCF, поэтому в зависимости от типа детали исключения клиент должен иметь довольно хорошее представление о том, что произошло. Я знаю, что мои вещи – MickyD

+0

@MickyD Извините, если вы меня неправильно поняли, для меня было очевидно, что он хотел, чтобы исключения были выброшены и отображены на стороне клиента. – Sidewinder94

0

Если услуга принадлежит вам, то используйте этот метод, который возвращает true.

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

Одна клиентская вещь, которую вы можете сделать, - это отправить WebRequest и посмотреть, возвращает ли она HttpStatusCode.OK, но не может пообещать вам, что служба не будет работать или не будет работать.

Во время вашего использования службы вы можете ожидать FaultException, ошибки прокси и состояния канала, неправильную конфигурацию (привязки и т. Д.) И CommunicationException объектов.

Вы можете узнать больше об этом на MSDN.

Оттуда:

Коммуникационные ошибки возникают, когда сеть недоступна, клиент использует неправильный адрес или хост-служба не прослушивает входящие сообщения. Ошибки этого типа возвращаются клиенту как классы CommunicationException или CommunicationException. Ошибки приложения возникают во время выполнения служебной операции. Ошибки такого рода отправляются клиенту как исключение FaultException или исключение FaultException.

Смежные вопросы