Получение параметров домена с сервера Exchange

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

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

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

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

  • EWS

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

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

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

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

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

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

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

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

Таблица 1. Параметры конфигурации домена

Параметр конфигурации Описание
ExternalEwsUrl
Внешний URL-адрес для EWS.
ExternalEwsVersion
Версия сервера Exchange Server, на котором размещен URL-адрес EWS.

Предварительные требования для получения параметров домена

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

Примечание.

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

Основные понятия для получения параметров домена

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

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

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

  • System.Net

  • Microsoft.Exchange.WebServices.Data.ExchangeService

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

Если вы используете управляемый API EWS, вы можете использовать метод Microsoft.Exchange.WebServices.Data.AutodiscoverSettings.GetUserSettings объекта Microsoft.Exchange.WebServices.Data.AutodiscoverService для создания запроса, который получает сведения о конфигурации для домена, как показано в следующем примере. В этом примере запрашиваются только некоторые из возможных параметров домена, а с сервера возвращаются только запрошенные параметры.

AutodiscoverService autodiscoverService = new AutodiscoverService("domain.contoso.com");
autodiscoverService.Credentials = new NetworkCredential("User1", "password", "domain.contoso.com");
// Submit a request and get the settings. The response contains only the
// settings that are requested, if they exist.
GetDomainSettingsResponse domainresponse = autodiscoverService.GetDomainSettings(
    "domain",
    ExchangeVersion.Exchang2013,
    DomainSettingName.ExternalEwsUrl,
    DomainSettingName.ExternalEwsVersion);

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

// Display each retrieved value. The settings are part of a key/value pair.
foreach (KeyValuePair<DomainSettingName, Object> domainsetting in domainresponse.Settings)
{
    Console.WriteLine(domainsetting.Key.ToString() + ": " + domainsetting.Value.ToString());
}

Кроме того, можно получить значение определенного параметра. В следующем примере должен отображаться параметр ExternalEwsUrl .

// Display a specific setting, such as ExternalEwsUrl.
Console.WriteLine(domainresponse.Settings[DomainSettingName.ExternalEwsUrl]);

Получение параметров пользователя с помощью автообнаружения SOAP EWS

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

<?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/GetDomainSettings</wsa:Action>
    <wsa:To>https://autodiscover.exchange.microsoft.com/autodiscover/autodiscover.svc</wsa:To>
  </soap:Header>
  <soap:Body>
    <a:GetDomainSettingsRequestMessage xmlns:a="https://schemas.microsoft.com/exchange/2010/Autodiscover">
      <a:Request>
        <a:Domains>
          <a:Domain>domain</a:Domain>
        </a:Domains>
        <a:RequestedSettings>
          <a:Setting>ExternalEwsUrl</a:Setting>
          <a:Setting>ExternalEwsVersion</a:Setting>
        </a:RequestedSettings>
        <a:RequestedVersion>Exchange2013</a:RequestedVersion>
      </a:Request>
    </a:GetDomainSettingsRequestMessage>
  </soap:Body>
</soap:Envelope>

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

<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/GetDomainSettingsResponse</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>
    <GetDomainSettingsResponseMessage xmlns="https://schemas.microsoft.com/exchange/2010/Autodiscover">
      <Response xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
        <ErrorCode>NoError</ErrorCode>
        <ErrorMessage />
        <DomainResponses>
          <DomainResponse>
            <ErrorCode>NoError</ErrorCode>
            <ErrorMessage>No error.</ErrorMessage>
            <DomainSettingErrors />
            <DomainSettings>
              <DomainSetting i:type="DomainStringSetting">
                <Name>ExternalEwsUrl</Name>
                <Value>https://failover.exchange.microsoft.com/ews/exchange.asmx</Value>
              </DomainSetting>
              <DomainSetting i:type="DomainStringSetting">
                <Name>ExternalEwsVersion</Name>
                <Value>15.00.0085.000</Value>
              </DomainSetting>
            </DomainSettings>
            <RedirectTarget i:nil="true" />
          </DomainResponse>
        </DomainResponses>
      </Response>
    </GetDomainSettingsResponseMessage>
  </s:Body>
</s:Envelope>

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

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

См. также