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

Узнайте, как использовать службу автообнаружения для направления клиентского приложения на правильный сервер Exchange Server.

Служба автообнаружения Exchange предоставляет клиентскому приложению параметры конфигурации для учетных записей электронной почты, размещенных в Exchange Online, Exchange Online в составе Office 365 или на сервере Exchange под управлением версии Exchange, начиная с Exchange 2013. Служба автообнаружения — это веб-служба, которая предоставляет параметры конфигурации. Служба автообнаружения — это веб-служба, которая предоставляет сведения о конфигурации сервера Exchange для клиентского приложения. Клиентские приложения используют автообнаружения для определения конечной точки службы автообнаружения для определенного почтового ящика. В этой статье объясняется, как следовать ответам сервера Exchange Server, чтобы найти правильную конечную точку.

Сведения о том, как получить параметры конфигурации адреса электронной почты, см. в разделах Получение параметров пользователя из Exchange с помощью автообнаружения и Получение параметров домена с сервера Exchange Server.

Примечание.

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

Для доступа к службе автообнаружения можно использовать одну из следующих технологий разработки Exchange:

  • Управляемый API веб-служб Exchange (EWS)

  • EWS

Если вы используете EWS, для получения параметров пользователя можно использовать следующие методы:

  • Служба автообнаружения на основе SOAP

  • Служба автообнаружения XML (POX)

  • Автоматически созданный прокси-сервер из службы автообнаружения SOAP или XML

Дополнительные сведения об этих методах см. в разделе Автообнаружения для Exchange.

Дополнительные сведения об этих технологиях разработки Exchange см. в статье Изучение управляемого API EWS, EWS и веб-служб в Exchange.

Управляемый API EWS предоставляет объектный интерфейс для получения параметров пользователя. Если клиентское приложение использует управляемый код, рекомендуется использовать управляемый API EWS. Интерфейс управляемого API EWS лучше оптимизирован для простой объектной модели, чем типичный автоматически создаваемый прокси-сервер веб-службы.

Если вы используете EWS, мы рекомендуем использовать службу автообнаружения SOAP, так как она поддерживает более широкий набор функций, чем служба автообнаружения POX.

Предварительные требования для поиска конечной точки

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

Примечание.

Если вы используете управляемый API EWS, в некоторых случаях необходимо предоставить обратный вызов проверки сертификата. Вам также может потребоваться обратный вызов проверки сертификата с некоторыми созданными прокси-библиотеками, например созданными Visual Studio. Дополнительные сведения см. в разделе Проверка сертификата сервера для управляемого API EWS.

Основные понятия для поиска конечной точки

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

Концепция Описание
Автообнаружение для Exchange
Общие сведения о работе службы автообнаружения.

Если вы используете Управляемый API EWS, вы используете класс Microsoft.Exchange.WebServices.Data.ExchangeService в пространстве имен Microsoft.Exchange.WebServices.Data для управления подключением к EWS. Чтобы использовать примеры кода управляемого API EWS, приведенные в этой статье, необходимо сослаться на следующие пространства имен в коде:

  • System.Net

  • Microsoft.Exchange.WebServices.Data.ExchangeService

Поиск правильной конечной точки с помощью управляемого API EWS

Если вы используете управляемый API EWS, вызовы службы автообнаружения обрабатываются классом ExchangeService . Чтобы определить правильную конечную точку для учетной записи электронной почты, вызовите метод AutodiscoverUrl для объекта [ExchangeService] . В следующем примере кода показано, как задать конечную точку веб-службы EWS для адреса электронной почты в файл Exchange.asmx на правильном сервере клиентского доступа с помощью управляемого API EWS.

NetworkCredential credentials = new NetworkCredential(securelyStoredEmail, securelyStoredPassword);
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013);
service.Credentials = credentials;
service.AutodiscoverUrl("User1@contoso.com");

Поиск правильной конечной точки с помощью EWS

Служба автообнаружения SOAP может использовать ряд запросов и ответов для направления приложения в правильную конечную точку для EWS. Сведения о процессе определения правильной конечной точки для учетной записи электронной почты см. в разделе Автообнаружения для Exchange. В следующих xml-примерах показан ряд запросов и ответов, которые можно ожидать при выполнении запроса автообнаружения SOAP для поиска правильной конечной точки.

Запрос конечной точки автообнаружения SOAP

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

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:a="https://schemas.microsoft.com/exchange/2010/Autodiscover" 
        xmlns:wsa="http://www.w3.org/2005/08/addressing" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <a:RequestedServerVersion>Exchange2013</a:RequestedServerVersion>
    <wsa:Action>https://schemas.microsoft.com/exchange/2010/Autodiscover/Autodiscover/GetUserSettings</wsa:Action>
    <wsa:To>https://mail.microsoft.com/autodiscover/autodiscover.svc</wsa:To>
  </soap:Header>
  <soap:Body>
    <a:GetUserSettingsRequestMessage xmlns:a="https://schemas.microsoft.com/exchange/2010/Autodiscover">
      <a:Request>
        <a:Users>
          <a:User>
            <a:Mailbox>User1@Contoso.com</a:Mailbox>
          </a:User>
        </a:Users>
        <a:RequestedSettings>
          <a:Setting>InternalEwsUrl</a:Setting>
          <a:Setting>ExternalEwsUrl</a:Setting>
        </a:RequestedSettings>
      </a:Request>
    </a:GetUserSettingsRequestMessage>
  </soap:Body>
</soap:Envelope>

Ответ на перенаправление автообнаружения SOAP

Служба автообнаружения может отвечать одним из двух ответов перенаправления: перенаправлением HTTP 302 или ответом перенаправления SOAP. Если ответ с сервера Exchange server является перенаправлением HTTP 302, клиентское приложение должно проверить, является ли адрес перенаправления приемлемым, а затем следовать ответу перенаправления.

Важно!

Критерии проверки ответа перенаправления см. в разделе Автообнаружение для Exchange.

Если служба автообнаружения возвращает ответ перенаправления, указанный элементом ErrorCode элемента UserResponse , клиентское приложение должно использовать элемент RedirectTarget для создания нового запроса параметров, который отправляется на сервер, указанный в ответе на перенаправление. В следующем примере показан ответ перенаправления с сервера.

<s:Envelope xmlns:s="https://schemas.xmlsoap.org/soap/envelope/" xmlns:a="http://www.w3.org/2005/08/addressing">
  <s:Header>
    <a:Action s:mustUnderstand="1">https://schemas.microsoft.com/exchange/2010/
        Autodiscover/Autodiscover/GetUserSettingsResponse</a:Action>
    <h:ServerVersionInfo xmlns:h="https://schemas.microsoft.com/exchange/2010/Autodiscover" 
        xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
      <h:MajorVersion>15</h:MajorVersion>
      <h:MinorVersion>0</h:MinorVersion>
      <h:MajorBuildNumber>682</h:MajorBuildNumber>
      <h:MinorBuildNumber>1</h:MinorBuildNumber>
      <h:Version>Exchange2013</h:Version>
    </h:ServerVersionInfo>
  </s:Header>
  <s:Body>
    <GetUserSettingsResponseMessage xmlns="https://schemas.microsoft.com/exchange/2010/Autodiscover">
      <Response xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
        <ErrorCode>NoError</ErrorCode>
        <ErrorMessage />
        <UserResponses>
          <UserResponse>
            <ErrorCode>RedirectAddress</ErrorCode>
            <ErrorMessage>Redirection address.</ErrorMessage>
            <RedirectTarget>User1@mail.Contoso.com</RedirectTarget>
            <UserSettingErrors />
            <UserSettings />
          </UserResponse>
        </UserResponses>
      </Response>
    </GetUserSettingsResponseMessage>
  </s:Body>
</s:Envelope>

После перенаправления клиент использует URL-адрес перенаправления для подготовки другого запроса. В следующем коде показан пример запроса, создаваемого из ответа перенаправления.

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:a="https://schemas.microsoft.com/exchange/2010/Autodiscover" 
        xmlns:wsa="http://www.w3.org/2005/08/addressing" 
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <a:RequestedServerVersion>Exchange2013</a:RequestedServerVersion>
    <wsa:Action>https://schemas.microsoft.com/exchange/2010/
        Autodiscover/Autodiscover/GetUserSettings</wsa:Action>
    <wsa:To>https://autodiscover.exchange.microsoft.com/autodiscover/autodiscover.svc</wsa:To>
  </soap:Header>
  <soap:Body>
    <a:GetUserSettingsRequestMessage xmlns:a="https://schemas.microsoft.com/exchange/2010/Autodiscover">
      <a:Request>
        <a:Users>
          <a:User>
            <a:Mailbox>User1@mail.Contoso.com</a:Mailbox>
          </a:User>
        </a:Users>
        <a:RequestedSettings>
          <a:Setting>InternalEwsUrl</a:Setting>
          <a:Setting>ExternalEwsUrl</a:Setting>
        </a:RequestedSettings>
      </a:Request>
    </a:GetUserSettingsRequestMessage>
  </soap:Body>
</soap:Envelope>

Если клиентское приложение было перенаправлено в правильную конечную точку для службы автообнаружения, сервер отправит ответ с элементом ErrorCode элемента UserResponse , который имеет значение NoError и содержит запрошенные параметры пользователя. Возвращаются только запрошенные параметры пользователя InternalEwsUrl и ExternalEwsUrl. В следующем примере показан ответ сервера.

<s:Envelope xmlns:s="https://schemas.xmlsoap.org/soap/envelope/" 
        xmlns:a="http://www.w3.org/2005/08/addressing">
  <s:Header>
    <a:Action s:mustUnderstand="1">https://schemas.microsoft.com/exchange/2010/
        Autodiscover/Autodiscover/GetUserSettingsResponse</a:Action>
    <h:ServerVersionInfo xmlns:h="https://schemas.microsoft.com/exchange/2010/Autodiscover" 
        xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
      <h:MajorVersion>15</h:MajorVersion>
      <h:MinorVersion>0</h:MinorVersion>
      <h:MajorBuildNumber>160</h:MajorBuildNumber>
      <h:MinorBuildNumber>4</h:MinorBuildNumber>
      <h:Version>Exchange2013</h:Version>
    </h:ServerVersionInfo>
  </s:Header>
  <s:Body>
    <GetUserSettingsResponseMessage xmlns="https://schemas.microsoft.com/exchange/2010/Autodiscover">
      <Response xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
        <ErrorCode>NoError</ErrorCode>
        <ErrorMessage />
        <UserResponses>
          <UserResponse>
            <ErrorCode>NoError</ErrorCode>
            <ErrorMessage>No error.</ErrorMessage>
            <RedirectTarget i:nil="true" />
            <UserSettingErrors />
            <UserSettings>
              <UserSetting i:type="StringSetting">
                <Name>InternalEwsUrl</Name>
                <Value>https://server.Contoso.com/ews/exchange.asmx</Value>
              </UserSetting>
              <UserSetting i:type="StringSetting">
                <Name>ExternalEwsUrl</Name>
                <Value>https://server.Contoso.com/ews/exchange.asmx</Value>
              </UserSetting>
            </UserSettings>
          </UserResponse>
        </UserResponses>
      </Response>
    </GetUserSettingsResponseMessage>
  </s:Body>
</s:Envelope>

Дальнейшие действия

Поиск конечной точки путем выполнения процесса автообнаружения возвращает запрошенные параметры домена или пользователя. Сведения о выполнении запроса для определенных параметров см. в следующих статьях:

См. также