Не удалось найти службу автообнаружения - PullRequest
5 голосов
/ 21 октября 2011

У меня есть код для отправки электронной почты с помощью веб-служб Exchange (EWS 1.1 API).Нет исключения, если я использую жестко закодированные значения параметров, такие как:

service.AutodiscoverUrl("me@mydomain.com",
    delegate
    {
    return true;
    });

Но если я пытаюсь использовать переменную, то при обнаружении URL я получаю сообщение об ошибке: «Не удалось найти службу автообнаружения».

string userName = "me@mydomain.com";
service.AutodiscoverUrl(userName,
    delegate
    {
    return true;
    });

Есть ли способ использовать переменные с методом autodiscoverurl?Что я делаю не так?

Санджай

Ответы [ 3 ]

8 голосов
/ 22 октября 2011

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

Включите трассировку на экземпляре ExchangeService ( статья MSDN ), чтобы узнать, что происходит.

1 голос
/ 20 июля 2017

Я понимаю, что этому посту несколько лет, но я предлагаю дополнительное решение просто для документации.

Другая возможная причина этого поведения - клиент пытается принудительно установить соединение TLS 1.2 , когда сервер EWS поддерживает только TLS 1.0 .Я собирался сдаться, расследуя это самое поведение - приложение EWS работало на одном ящике, и одно и то же приложение не работало на другом ящике (при переходе к одному и тому же почтовому ящику) - и проблема заключалась в том, что одна машина могла согласовать TLS 1.0, который работал, хотядругой мог сделать только TLS 1.2, что не удалось.Включение клиентских исходящих соединений TLS 1.0 в реестре (HKLM\System\CCS\Services\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Client, значение DWORD 'Enabled', установленное на 0x1, решило проблему. Перезагрузка не требуется.

0 голосов
/ 29 октября 2018

И просто, чтобы добавить другое решение - я изо всех сил пытался из-за противоположной проблемы с Дэвидом W выше - мой сервер обмена поддерживал только TLS1.2, но мое приложение (.net 4.5) по умолчанию поддерживало только 1.0.

Исправлено добавлением:

System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;

к коду запуска моего приложения. Я считаю, что это включено по умолчанию для .net 4.6 и выше

Я получил конкретную ошибку:

<Trace Tag="AutodiscoverConfiguration" Tid="1" Time="2018-10-29 15:32:40Z">
 failed: WebException (The underlying connection was closed: An unexpected error occurred on a send.)
</Trace>
Exception thrown: 'Microsoft.Exchange.WebServices.Data.AutodiscoverLocalException' in Microsoft.Exchange.WebServices.dll
...