Моя служба работает в настоящее время наКак клиент может знать, работает ли служба wcf?
localhost:17722/Book.svc
Как мой клиент приложение знать, если служба работает, прежде чем пытаться потреблять?
Моя служба работает в настоящее время наКак клиент может знать, работает ли служба wcf?
localhost:17722/Book.svc
Как мой клиент приложение знать, если служба работает, прежде чем пытаться потреблять?
Не проверять, если сервер запущен перед употреблением его. Потребляйте службу и обрабатывайте любые ошибки, возникающие во время вызова.
Даже если вы проверите, что служба установлена, она может опуститься между временем, когда вы проверяете, что она установлена, и вы вызываете эту услугу. Поэтому, даже если вы проверяете, что все встало, вам все равно придется обращаться с ним, когда вы его потребляете.
Лучший способ проверить, работает ли служба, попытаться ее использовать.
только своего рода пинг
, но без гарантии, что после того, как вы пинг было нормально услуга будет не падает на порядок до вашего реального запроса
Резюмируя:
Приготовьте вы Клинт к обрабатывать мертвые службы, ошибки и т. д.
Ну, это невозможно, пока вы не попробуете службу (или пинг сервера). Вызов вашего веб-сервиса из вашего клиентского приложения - это вызов любого другого веб-сервиса, как вы можете узнать, что веб-служба google работает до ее потребления?
Как только у меня возникла аналогичная проблема, и я просто выставляю операцию, которая возвращает «что-то» (например, return true
), которую я звонил, чтобы узнать, было ли «прикладное» приложение сервера «ожиданным» и «ошибка времени» или «500» когда не работает.
В этой ситуации я применил бы принципал Tell, don't ask. Просто попробуйте выполнить любую операцию, которую вы намеревались делать, а затем обработайте исключение, если оно не выполнено.
Зачем нужна ваша программа для обслуживания, если это не было необходимо для работы программы?
Hey service, can I invoke your 'X' method? ... no? ... okay, I didn't want to anyway :P
Установите манекен в svc, который возвращает bool или что-то в этом роде. Затем нажмите на фоновый поток с заданным интервалом. Если время ожидания запроса, вы можете обработать таймаут, показывая что-то, что говорит о том, что услуга недоступна.
Какое обязательное использование вы используете? – ilansch
@ilansch wsHttpBinding – user2783193