SmtpClient.Timeout на MonoTouch (iOS), похоже, не имеет никакого эффекта, я делаю это неправильно? - PullRequest
1 голос
/ 03 февраля 2012

Я создаю «тестовую» кнопку для проверки конфигурации SMTP в приложении.

Если пользователь вводит неправильный номер порта, переключает SSL вкл. / Выкл. В неправильное состояние или вводит действительное имя домена, но не содержащее SMTP-сервер, приложение зависает, ожидая тайм-аута .

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

В данном случае это время ожидания составляет около 1 минуты 15 секунд.

Я попытался установить время ожидания следующим образом:

var client = new SmtpClient(hostname, port);
client.Timeout = 15000; // milliseconds

но время ожидания все еще составляет около 1 минуты 15 секунд.

Что-нибудь еще нужно настроить?

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

1 Ответ

2 голосов
/ 03 февраля 2012

Это может быть связано с разрешением DNS, которое выполняется синхронно . Вы можете легко подтвердить это, используя IP-адрес вместо имени хоста, и посмотрите, приблизится ли время ожидания к ожидаемым 15 секундам.

Если это так, то возможная альтернатива, которую я не протестировал под iOS, может быть для использования Mono.Dns .

...