«Не удалось найти службу автообнаружения» при попытке доступа к учетной записи Exchange 2010 с помощью EWS MANAGED API

Я использую URL-адрес службы автоматического обнаружения для указанного адреса электронной почты.

ExchangeService Service = new ExchangeService(ExchangeVersion.Exchange2010);
Service.Credentials = new WebCredentials("[email protected]", "Password");
Service.AutodiscoverUrl("[email protected]");
Folder inbox = Folder.Bind(Service, WellKnownFolderName.Inbox);
Console.WriteLine("The folder name is" + inbox.DisplayName.ToString());

Если мне это нравится, я получаю сообщение об ошибке:

Не удалось найти службу автообнаружения

Что мне нужно сделать, чтобы избежать этой ошибки?


person user1891567    schedule 25.02.2013    source источник


Ответы (11)


Вы ошиблись Service.Credentials, используйте это так:

Service.Credentials = new WebCredentials(username, password, domainname);

Использование учетных данных домена, а не адреса электронной почты.

Также дважды проверьте следующее:

  1. Версия, указанная в new ExchangeService(), совпадает с серверной
  2. параметр, переданный в Service.AutodiscoverUrl();, правильный (адрес электронной почты, данные для которого необходимо получить)

Для меня работает следующее (в новом консольном приложении):

// Tweaked to match server version
ExchangeService Service = new ExchangeService(ExchangeVersion.Exchange2007_SP1); 

// Dummy but realistic credentials provided below
Service.Credentials = new WebCredentials("john", "12345678", "MYDOMAIN");
Service.AutodiscoverUrl("[email protected]");
Folder inbox = Folder.Bind(Service, WellKnownFolderName.Inbox);
Console.WriteLine("The folder name is " + inbox.DisplayName.ToString());

//Console output follows (IT localized environment, 'Posta in arrivo' = 'Inbox')
> The folder name is Posta in arrivo
person Alex    schedule 25.02.2013
comment
Спасибо, что ответили, Алекс. Я пробовал, как ты сказал выше, но возникает та же ошибка. - person user1891567; 25.02.2013
comment
Я не знаю, что сказать, я скопировал ваш код в новое консольное приложение, и он работает после сопоставления версии сервера (наша - 2007SP1) и изменения учетных данных, как я указал выше. Разница в версии сервера может иметь значение, но у меня нет возможности проверить это. - person Alex; 25.02.2013
comment
Попробовал сменить версию на Exchange2007_SP1, Exchange2010, Exchange2010_SP1, Exchange2010_SP2 ... Приходит та же ошибка. - person user1891567; 25.02.2013
comment
обновленный ответ со всей имеющейся у меня информацией. Я бы посоветовал связаться с ИТ-отделом и в первую очередь убедиться, что EWS включен, и / или проверить журналы сервера (доходят ли ваши запросы до сервера?) - person Alex; 25.02.2013
comment
если я использую это, я получаю всю информацию о почтовом ящике, о котором я упоминал: «ExchangeService Service = new ExchangeService (ExchangeVersion.Exchange2010); Service.Credentials = новые WebCredentials (adminuser1,1234567, mydomain); Service.Url = новый Uri (HTTPS: //ServerName/EWS/Exchange.asmx); `здесь Я жестко запрограммировал имя сервера. Если я использую Autodiscoverurl, я могу передавать все данные динамически во время выполнения. Поэтому я использовал autodiscoverurl вместо этого Service.Url, `Service.AutodiscoverUrl ([email protected], delegate {return true;}); '.... Приходит та же ошибка - person user1891567; 26.02.2013
comment
Интересно, http s может что-нибудь сломать. Боюсь, у меня нет возможности проверить это. - person Alex; 26.02.2013
comment
Я не понимаю, о чем ты говорила - person user1891567; 27.02.2013
comment
почему 'new WebCredentials ([email protected], Password);' неправильно ? Это 3-й вариант перегрузки. - person Muflix; 31.12.2015

Позвольте мне указать, что если вы пытаетесь получить доступ к Office 365, тогда веб-учетные данные действительно имеют форму WebCredentials (strUsername, strPassword); где strUsername - это адрес электронной почты учетной записи, к которой вы пытаетесь получить доступ.

Я получал эту ошибку, и оказалось, что кто-то изменил пароль к учетной записи, не проинформировав меня! Какая странная ошибка, когда это просто неверный пароль!

person user3531993    schedule 15.04.2014
comment
спасибо @ user3531993 протестировал работает. На всякий случай, если другие люди читают документ MSDN - Microsoft дала вариант, когда strUsername - это не адрес электронной почты, а только имя пользователя, и это меня смутило, потому что оно НЕ РАБОТАЕТ, вот ссылка msdn.microsoft.com/en-us/library/dn467891 (v = exchg.150) .aspx - person Dung; 14.05.2016
comment
Благодарим за указание на то, что эта ошибка также может возникать из-за неправильных учетных данных. Сэкономил мне немного времени! - person confusedandamused; 06.10.2016

Я порекомендую вам включить Traces, для этого выполните следующие действия:

     Service.TraceEnabled = true;

Я столкнулся с той же проблемой, когда я включил трассировки, эти трассировки помогут вам, что именно происходит. В моем случае проблема с сертификатом SSL существует для ее решения, я следил за post

Может быть много проблем, таких как:

  • Пользователь может быть заблокирован.
  • DNS не может найти autodiscover.domain.com.
person nitesh.kodle123    schedule 09.12.2013
comment
Спасибо. Это помогло мне определить проблему в моем случае. DNS не смог разрешить autodiscover.domain.com на сервере, тогда как это работало на моем локальном компьютере. В файл hosts добавлена ​​запись, указывающая autodiscover.domain.com на правильный IP-адрес, и все работало, как ожидалось. - person user2260040; 25.03.2015
comment
Чтобы настроить вывод трассировки, следуйте инструкциям здесь msdn.microsoft.com/en-us/library/office/ - person mike nelson; 10.09.2017

Для записи полноты:

Мы обнаружили, что служба внезапно останавливается с этой конкретной ошибкой. Поскольку служба работала без присмотра в течение нескольких месяцев, используя EWS для мониторинга почтового ящика, выяснилось, что срок действия пароля истек. Это привело к сбою AutoDiscovery с тем же исключением:

Не удалось найти службу автообнаружения

Обновление пароля пользователя Exchange в AD и проверка его свойства Password Never Expires решили проблему для нас.

person Gigabyte    schedule 28.01.2015
comment
Хорошо написано и полно. Моя тоже истекла. - person wruckie; 09.11.2015

попробуйте использовать это:

Service.Credentials = new WebCredentials("john", "12345678", "MYDOMAIN");

Не этот

Service.Credentials = new WebCredentials("[email protected]", "12345678", "MYDOMAIN");

обратите внимание, что имя пользователя 'john' НЕ '[email protected]', он заблокировал меня на несколько часов за использование второго ....

person cenday    schedule 01.08.2013

Проверьте, не истек ли срок действия пароля для этого электронного письма.

Если срок действия пароля истек, вы получите эту ошибку от AutoDiscover.

person Carlos ABS    schedule 23.03.2015
comment
На самом деле @StephenMuecke этот ответ был полезен - оказалось, что это моя проблема! - person kaveman; 17.08.2015

Я использовал прямой:

Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx")

и это сработало для меня. Вы можете попробовать использовать Fiddler и eM Client, чтобы узнать, как они используют EWS Managed API для выполнения задач и репликации вызовов.

person Dzmitry Lahoda    schedule 13.03.2018
comment
Сработало мгновенно. Подходит для гибридных сред. - person Will; 19.12.2018
comment
Это решение и для меня - person Roberto Borges; 06.06.2019

Я бы рекомендовал вам убедиться, что автообнаружение действительно настроено в DNS. В следующей статье объясняется, как его настроить, а также дается информация о том, как протестировать его с помощью Microsoft Remote Connectivity Analyzer. http://www.petri.co.il/autodiscover-configuration-exchange-2010.htm

person cmchenry    schedule 03.03.2013

Столкнулся с этой проблемой для конкретного пользователя. После проверки я обнаружил, что пользователь включил двухфакторную аутентификацию и использовал свой основной пароль для подключения. Решается путем создания специального пароля для приложения и подключения к нему. Отключение двух факторов также сработало, но потребуется время, чтобы подумать. Не уверен, почему exchange дал «Не удалось найти службу автообнаружения». вместо "Неавторизованный".

person Priyank Kotiyal    schedule 04.02.2019
comment
Вдобавок ИТ-специалисты могут настроить учетные записи O365, перенаправленные в домен компании. И это может не сработать. Подойдет простая учетная запись с адресом электронной почты / паролем. И это именно то, что у нас есть. Учетные записи реальных пользователей направляются в домен, и я не могу войти в систему. Для приложений у нас есть специальные аккаунты, которые не перенаправляются в домен. - person T.S.; 28.03.2020

У меня возникла та же проблема с Exchange 2013. В моем случае причиной было объявление прокси по умолчанию в моем файле конфигурации, что, вероятно, мешало правильной работе службы автообнаружения.

<system.net>
    <defaultProxy enabled="true">
      <proxy proxyaddress="http://localhost:8888" bypassonlocal="False"/>
    </defaultProxy>
</system.net>

После комментирования тега <defaultProxy> автообнаружение смогло найти URL-адрес службы.

person Vasile Tomoiaga    schedule 03.03.2014

Я нажал на это, и трассировка показывает, что после использования прокси для доступа к 365 он начинает поиск DNS для записи SVC. Этот поиск идет на внутренний DNS, а не на прокси, наш внутренний DNS не разрешает внешние записи DNS, поэтому у нас есть прокси-серверы. Пока не выяснено, почему он выполняет поиск DNS, а не использует прокси-серверы, но это то, что вызывает нашу версию этой проблемы.

person Chris Lee    schedule 04.03.2016