
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.15.237.35] |
![]() |
|
Сообщ.
#1
,
|
|
|
Всем привет,
Есть wcf сервис, есть клиент, который его юзает. При определенном запросе к wcf сервису, процесс, в котором сервис хостится и который представляет собой виндовую службу, может отвалиться. Там происходит обращение к unmanaged dll, и перехватить это падение нет возможности. Вин служба настроена так, чтобы самой перезапускаться. После падения wcf сервиса клиент с заданным периодом пытается восстановить связь с wcf-сервисом. Но проблема в том, что объект прокси создается успешно, даже если wcf-сервис недоступен. Приходится вызывать тестовый пустой метод wcf-сервиса, ловить exception... Сейчас делаю так: ![]() ![]() private static void Reconnect() { try { lock (_lock) { if (!IsOnline) { Debug.WriteLine("Trying to reconnect to the Test service"); _cePortalClient = new TestClient(); _cePortalClient.Test(); IsOnline = true; } } } catch (Exception) { IsOnline = false; _cePortalClient = null; } } нет ли более адекватного способа делать реконнект после падения wcf сервиса? |
Сообщ.
#2
,
|
|
|
Ну вот честно говоря, я тоже думаю, что что-то должно быть такое правильное. НО!
Я использую такой способ. Только немного подругому. Я делаю периодический вызов пустого метода Ping. По-моему вполне логично. К тому же подключение к серверу устанавливается на время вызова удалённого метода. Т.е. пока не вызовишь метод - не узнаешь, жив ли сервер. Хотя, могу и ошибаться. |