В зависимости от типа данных, которые вы получаете обратно, частоты проверок и т. Д. Я бы использовал универсальное решение, которое несколько раз пытается установить соединение при сбое, а затем классифицирует «исключения» при сбое (никогда не бывает двух исключений) то же самое по моему опыту).
Например:
var failCount = 0;
var succeeded = false;
while ((failCount < 3) && (!succceeded)) {
try {
//call service....
succeeded = true;
} catch(WebException wex) {
//handle wex, for instance look for timeout and retry
} catch(...) {
//Handle other exceptions differently...
LogError("BOOOM: " + excep);
throw;
} catch(Exception ex) {
//handle a general exception
failCount++;
}
}
if (failCount >= 4) {
//Unspecified error multiple times, react appropriately...
}
Очевидно, что вы не хотите делать многократные попытки, если это дорогой вызов, здесь я предполагаю, что это своего рода «сердцебиение», это не слишком дорого. Значение «failCount» может быть отрегулировано в зависимости от того, насколько «турбулентным» является ожидаемое соединение.