Obtenir les paramètres de l’utilisateur Exchange à l’aide de découverte automatiqueGet user settings from Exchange by using Autodiscover

Découvrez comment obtenir les paramètres de configuration utilisateur à partir d’un serveur Exchange à l’aide de découverte automatique.Learn how to get user configuration settings from an Exchange server by using Autodiscover.

Découverte automatique simplifie la configuration de l’application en fournissant un accès facile aux informations de configuration utilisateur en utilisant uniquement adresse de messagerie de l’utilisateur et le mot de passe.Autodiscover simplifies application configuration by providing easy access to user configuration information using only the user's email address and password. Un nombre de paramètres de configuration utilisateur sont disponibles par le biais de découverte automatique, tels que le nom complet ou l’URL du service web externe de l’utilisateur.A number of user configuration settings are available via Autodiscover, such as the user's display name or external web service URL.

Vous pouvez utiliser une des technologies de développement suivantes pour récupérer les paramètres de l’utilisateur à partir du service de découverte automatique :You can use one of the following development technologies to retrieve user settings from the Autodiscover service:

L'API managée EWS fournit une interface basée sur des objets pour récupérer les paramètres de l'utilisateur.The EWS Managed API provides an object-based interface for retrieving user settings. Si votre application cliente utilise du code managé, nous vous recommandons de choisir l'API managée EWS.If your client application uses managed code, we recommend that you use the EWS Managed API. Si vous utilisez l’API managée EWS, ce paramètre détermine si les paramètres dont vous avez besoin sont disponibles dans l’énumération Microsoft.Exchange.WebServices.Autodiscover.UserSettingName .If you are using the EWS Managed API, determine whether the settings that you need are available in the Microsoft.Exchange.WebServices.Autodiscover.UserSettingName enumeration. Si elles ne sont pas, vous souhaitez utiliser les services SOAP ou variole Autodiscover.If they aren't, you might want to use the SOAP or POX Autodiscover services.

Si vous utilisez un service web, nous vous suggérons d’utiliser le service de découverte automatique SOAP, car elle prend en charge un ensemble de fonctionnalités plus riche que le service de découverte automatique variole.If you are using a web service, we suggest that you use the SOAP Autodiscover service, because it supports a richer set of features than the POX Autodiscover service. Si le service de découverte automatique SOAP n’est pas disponible, le service de découverte automatique variole est une bonne alternative.If the SOAP Autodiscover service isn't available, the POX Autodiscover service is a good alternative.

Configurer pour obtenir les paramètres utilisateurSet up to get user settings

Avant d’obtenir les paramètres utilisateur à l’aide du service de découverte automatique, assurez-vous que vous avez accès à ce qui suit :Before you get user settings by using the Autodiscover service, make sure that you have access to the following:

  • Si vous utilisez l’API managée EWS ou le service Autodiscover basée sur variole, Exchange Online, Exchange Online dans le cadre d’Office 365 ou un serveur qui exécute une version d’Exchange commençant par Exchange 2007 SP1.If you are using the EWS Managed API or the POX-based Autodiscover service, Exchange Online, Exchange Online as part of Office 365, or a server that is running a version of Exchange starting with Exchange 2007 SP1.

  • Si vous utilisez le service Autodiscover basés sur SOAP, Exchange Online ou une version d’Exchange commençant par Exchange 2010.If you are using the SOAP-based Autodiscover service, Exchange Online or a version of Exchange starting with Exchange 2010.

Notes

Si vous utilisez l’API managée EWS, vous devrez fournir une méthode de rappel de validation de certificat dans certaines circonstances.If you are using the EWS Managed API, you will need to provide a certificate validation callback method in some circumstances. Vous devrez également une méthode de rappel de validation de certificat avec des bibliothèques de proxy généré, telles que celles créées par Visual Studio.You might also need a certificate validation callback method with some generated proxy libraries, such as those created by Visual Studio.

Obtenir les paramètres de l’utilisateur à l’aide de l’API managée EWSGet user settings by using the EWS Managed API

Vous pouvez utiliser la méthode GetUserSettings pour extraire des informations de configuration pour un utilisateur, comme illustré dans l’exemple suivant.You can use the GetUserSettings method to retrieve configuration information for a user, as shown in the following example. Dans cet exemple, vous pouvez spécifier un tableau de paramètres utilisateur à renvoyer (à partir de celles qui sont disponibles dans l’énumération UserSettingName ) et la méthode doit suivre les réponses de redirection à partir du serveur Exchange.In this example, you can specify an array of user settings to return (from those available in the UserSettingName enumeration), and the method will follow redirection responses from the Exchange server.

using System;
using System.Net;
using Microsoft.Exchange.WebServices.Autodiscover;
public static GetUserSettingsResponse GetUserSettings(
    AutodiscoverService service,
    string emailAddress,
    int maxHops,
    params UserSettingName[] settings)
{
    Uri url = null;
    GetUserSettingsResponse response = null;
    for (int attempt = 0; attempt < maxHops; attempt++)
    {
        service.Url = url;
        service.EnableScpLookup = (attempt < 2);
        response = service.GetUserSettings(emailAddress, settings);
        if (response.ErrorCode == AutodiscoverErrorCode.RedirectAddress)
        {
            url = new Uri(response.RedirectTarget);
        }
        else if (response.ErrorCode == AutodiscoverErrorCode.RedirectUrl)
        {
            url = new Uri(response.RedirectTarget);
        }
        else
        {
            return response;
        }
    }
    throw new Exception("No suitable Autodiscover endpoint was found.");
}

Vous pouvez analyser la collection retournée à accéder à chaque paire clé/valeur dans le tableau de paramètres utilisateur.You can parse the collection returned to access each key/value pair in the user settings array. L'exemple suivant montre comment analyser chaque élément retourné et affiche le nom et la valeur de chaque paire clé/valeur.The following example shows how to parse through each returned element and display the name and value of each key/value pair.

// Display each retrieved value. The settings are part of a key/value pair.
// userresponse is a GetUserSettingsResonse object.
foreach (KeyValuePair<UserSettingName, Object> usersetting in userresponse.Settings)
{
    Console.WriteLine(usersetting.Key.ToString() + ": " + usersetting.Value);
}

Vous pouvez également obtenir la valeur d'un paramètre spécifique.Alternatively, you can obtain the value of a specific setting. Dans l’exemple suivant, le paramètre UserDisplayName doit s’afficher.In the following example, the UserDisplayName setting is to be displayed.

// Display a specific setting, such as UserDisplayName.
Console.WriteLine(userresponse.Settings[UserSettingName.UserDisplayName]);

Obtenir les paramètres de l’utilisateur à l’aide de découverte automatique SOAPGet user settings by using SOAP Autodiscover

Si vous n’utilisez pas l’API managée EWS, nous vous recommandons d’utiliser le service web de découverte automatique SOAP.If you're not using the EWS Managed API, we recommend that you use the SOAP Autodiscover web service. Utilisez uniquement le service web de découverte automatique variole si le service web de découverte automatique SOAP échoue ou n’est pas disponible.Only use the POX Autodiscover web service if the SOAP Autodiscover web service fails or is not available.

Pour obtenir les paramètres de l’utilisateur, utilisez l' opération GetUserSettings (SOAP).To get user settings, use the GetUserSettings operation (SOAP). Les paramètres requis sont renvoyés en tant qu’éléments UserSetting.The requested settings are returned as UserSetting elements.

L’exemple suivant montre une demande SOAP Autodiscover pour obtenir les paramètres utilisateur à partir du serveur.The following example shows a SOAP Autodiscover request to get user settings from the server.

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:a="http://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="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <a:RequestedServerVersion>Exchange2013</a:RequestedServerVersion>
    <wsa:Action>http://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="http://schemas.microsoft.com/exchange/2010/Autodiscover">
      <a:Request>
        <a:Users>
          <a:User>
            <a:Mailbox>mara@contoso.com</a:Mailbox>
          </a:User>
        </a:Users>
        <a:RequestedSettings>
          <a:Setting>UserDisplayName</a:Setting>
          <a:Setting>UserDN</a:Setting>
          <a:Setting>UserDeploymentId</a:Setting>
          <a:Setting>InternalMailboxServer</a:Setting>
          <a:Setting>MailboxDN</a:Setting>
          <a:Setting>PublicFolderServer</a:Setting>
          <a:Setting>ActiveDirectoryServer</a:Setting>
          <a:Setting>ExternalMailboxServer</a:Setting>
          <a:Setting>EcpDeliveryReportUrlFragment</a:Setting>
          <a:Setting>EcpPublishingUrlFragment</a:Setting>
          <a:Setting>EcpTextMessagingUrlFragment</a:Setting>
          <a:Setting>ExternalEwsUrl</a:Setting>
          <a:Setting>CasVersion</a:Setting>
          <a:Setting>EwsSupportedSchemas</a:Setting>
          <a:Setting>GroupingInformation</a:Setting>
        </a:RequestedSettings>
      </a:Request>
    </a:GetUserSettingsRequestMessage>
  </soap:Body>
</soap:Envelope>

L’exemple suivant montre la réponse SOAP qui est retournée par le serveur après avoir analysé la demande à partir du client.The following example shows the SOAP response that is returned by the server after it parses the request from the client. La réponse contient uniquement les paramètres qui sont demandées, s’ils existent.The response contains only the settings that are requested, if they exist.

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" xmlns:a="http://www.w3.org/2005/08/addressing">
  <s:Header>
    <a:Action s:mustUnderstand="1">http://schemas.microsoft.com/exchange/2010/
        Autodiscover/Autodiscover/GetUserSettingsResponse</a:Action>
    <h:ServerVersionInfo xmlns:h="http://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="http://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>UserDisplayName</Name>
                <Value>Mara Whitley</Value>
              </UserSetting>
              <UserSetting i:type="StringSetting">
                <Name>UserDN</Name>
                <Value>/o=microsoft/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=mara</Value>
              </UserSetting>
              <UserSetting i:type="StringSetting">
                <Name>UserDeploymentId</Name>
                <Value>649d50b8-a1ce-4bac-8ace-2321   e463f701</Value>
              </UserSetting>
              <UserSetting i:type="StringSetting">
                <Name>CasVersion</Name>
                <Value>15.01.0160.004</Value>
              </UserSetting>
              <UserSetting i:type="StringSetting">
                <Name>EwsSupportedSchemas</Name>
                <Value>Exchange2007, Exchange2007_SP1, Exchange2010, Exchange2010_SP1, Exchange2010_SP2, Exchange2013</Value>
              </UserSetting>
              <UserSetting i:type="StringSetting">
                <Name>InternalMailboxServer</Name>
                <Value>mail.contoso.com</Value>
              </UserSetting>
              <UserSetting i:type="StringSetting">
                <Name>ActiveDirectoryServer</Name>
                <Value>dc.contoso.com</Value>
              </UserSetting>
              <UserSetting i:type="StringSetting">
                <Name>MailboxDN</Name>
                <Value>/o=microsoft/ou=Exchange Administrative Group 
                  (FYDIBOHF23SPDLT)/cn=Configuration/cn=Servers/cn=mail.contoso.com/cn=Contoso Private MDB</Value>
              </UserSetting>
              <UserSetting i:type="StringSetting">
                <Name>PublicFolderServer</Name>
                <Value>public.contoso.com</Value>
              </UserSetting>
              <UserSetting i:type="StringSetting">
                <Name>EcpDeliveryReportUrlFragment</Name>
                <Value>PersonalSettings/DeliveryReport.aspx?exsvurl=1&amp;amp;IsOWA=&amp;lt;IsOWA&amp;gt;&amp;amp;MsgID=&amp;lt;MsgID&amp;gt;&amp;amp;Mbx=&amp;lt;Mbx&amp;gt;</Value>
              </UserSetting>
              <UserSetting i:type="StringSetting">
                <Name>EcpTextMessagingUrlFragment</Name>
                <Value>?p=sms/textmessaging.slab&amp;amp;exsvurl=1</Value>
              </UserSetting>
              <UserSetting i:type="StringSetting">
                <Name>EcpPublishingUrlFragment</Name>
                <Value>customize/calendarpublishing.slab?exsvurl=1&amp;amp;FldID=&amp;lt;FldID&amp;gt;</Value>
              </UserSetting>
              <UserSetting i:type="StringSetting">
                <Name>ExternalEwsUrl</Name>
                <Value>https://mail.contoso.com/EWS/Exchange.asmx</Value>
              </UserSetting>
              <UserSetting i:type="StringSetting">
                <Name>ExternalMailboxServer</Name>
                <Value>mail.contoso.com</Value>
              </UserSetting>
              <UserSetting i:type="StringSetting">
                <Name>GroupingInformation</Name>
                <Value>CONTOSO-1</Value>
              </UserSetting>
            </UserSettings>
          </UserResponse>
        </UserResponses>
      </Response>
    </GetUserSettingsResponseMessage>
  </s:Body>
</s:Envelope

Obtenir les paramètres de l’utilisateur à l’aide de découverte automatique POXGet user settings by using POX Autodiscover

Bien que nous vous conseillons d’utiliser le service web de découverte automatique SOAP, le service web de découverte automatique variole est une bonne option de sauvegarde pour les durées lorsque SOAP n’est pas disponible.Although we recommend that you use the SOAP Autodiscover web service, the POX Autodiscover web service is a good backup option for those times when SOAP isn't available. Par exemple, Exchange 2007 ne gère pas l’Autodiscover SOAP du service web, afin que si vous ciblez Exchange 2007, vous devez utiliser le service web de découverte automatique variole.For example, Exchange 2007 does not support the SOAP Autodiscover web service, so if you are targeting Exchange 2007, you have to use the POX Autodiscover web service. Contrairement au service web de découverte automatique SOAP, le service de découverte automatique variole n’autorise pas la demande de paramètres spécifiques.Unlike the SOAP Autodiscover web service, the POX Autodiscover service does not allow you to request specific settings. Au lieu de cela, le serveur renvoie une liste complète des paramètres disponibles en tant qu’éléments enfants de l' élément de protocole.Instead, the server returns a full list of available settings as child elements of the Protocol element.

L’exemple suivant montre une demande de découverte automatique variole pour obtenir les paramètres utilisateur à partir du serveur.The following example shows a POX Autodiscover request to get user settings from the server. Le code XML suivant est envoyé au serveur via une publication HTTP.The following XML is sent to the server via an HTTP POST.

<?xml version="1.0" encoding="utf-8"?>
<Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/requestschema/2006">
  <Request>
    <EMailAddress>mara@contoso.com</EMailAddress>
    <AcceptableResponseSchema>http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a</AcceptableResponseSchema>
  </Request>
</Autodiscover>

L’exemple suivant montre la réponse variole qui est retournée par le serveur.The following example shows the POX response that is returned by the server.

<?xml version="1.0" encoding="utf-8"?>
<Autodiscover xmlns="http://schemas.microsoft.com/exchange/autodiscover/responseschema/2006">
  <Response xmlns="http://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a">
    <User>
      <DisplayName>Mara Whitley</DisplayName>
      <LegacyDN>/o=First Organization/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=f5eeabead90d4b6fb51d6379474692cd-Mara</LegacyDN>
      <AutoDiscoverSMTPAddress>mara@contoso.com</AutoDiscoverSMTPAddress>
      <DeploymentId>50817eff-b925-4578-a0db-13bfc635e7a5</DeploymentId>
    </User>
    <Account>
      <AccountType>email</AccountType>
      <Action>settings</Action>
      <MicrosoftOnline>False</MicrosoftOnline>
      <Protocol>
        <Type>EXCH</Type>
        <Server>5f76be3c-9138-4f66-85e0-21bc23ca35f0@contoso.com</Server>
        <ServerDN>/o=First Organization/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Configuration/cn=Servers/cn=5f76be3c-9138-4f66-85e0-21bc23ca35f0@contoso.com</ServerDN>
        <ServerVersion>73C08204</ServerVersion>
        <MdbDN>/o=First Organization/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Configuration/cn=Servers/cn=5f76be3c-9138-4f66-85e0-21bc23ca35f0@contoso.com/cn=Microsoft Private MDB</MdbDN>
        <PublicFolderServer>public.contoso.com</PublicFolderServer>
        <AD>dc.contoso.com</AD>
        <ASUrl>https://mail.contoso.com/EWS/Exchange.asmx</ASUrl>
        <EwsUrl>https://mail.contoso.com/EWS/Exchange.asmx</EwsUrl>
        <EmwsUrl>https://mail.contoso.com/EWS/Exchange.asmx</EmwsUrl>
        <EcpUrl>https://mail.contoso.com/ecp/</EcpUrl>
        <EcpUrl-um>?rfr=olk&amp;amp;p=customize/voicemail.aspx&amp;amp;exsvurl=1&amp;amp;realm=contoso.com</EcpUrl-um>
        <EcpUrl-aggr>?rfr=olk&amp;amp;p=personalsettings/EmailSubscriptions.slab&amp;amp;exsvurl=1&amp;amp;realm=contoso.com</EcpUrl-aggr>
        <EcpUrl-mt>PersonalSettings/DeliveryReport.aspx?rfr=olk&amp;amp;exsvurl=1&amp;amp;IsOWA=&amp;lt;IsOWA&amp;gt;&amp;amp;MsgID=&amp;lt;MsgID&amp;gt;&amp;amp;Mbx=&amp;lt;Mbx&amp;gt;&amp;amp;realm=contoso.com</EcpUrl-mt>
        <EcpUrl-ret>?rfr=olk&amp;amp;p=organize/retentionpolicytags.slab&amp;amp;exsvurl=1&amp;amp;realm=contoso.com</EcpUrl-ret>
        <EcpUrl-sms>?rfr=olk&amp;amp;p=sms/textmessaging.slab&amp;amp;exsvurl=1&amp;amp;realm=contoso.com</EcpUrl-sms>
        <EcpUrl-publish>customize/calendarpublishing.slab?rfr=olk&amp;amp;exsvurl=1&amp;amp;FldID=&amp;lt;FldID&amp;gt;&amp;amp;realm=contoso.com</EcpUrl-publish>
        <EcpUrl-photo>PersonalSettings/EditAccount.aspx?rfr=olk&amp;amp;chgPhoto=1&amp;amp;exsvurl=1&amp;amp;realm=contoso.com</EcpUrl-photo>
        <EcpUrl-tm>?rfr=olk&amp;amp;ftr=TeamMailbox&amp;amp;exsvurl=1&amp;amp;realm=contoso.com</EcpUrl-tm>
        <EcpUrl-tmCreating>?rfr=olk&amp;amp;ftr=TeamMailboxCreating&amp;amp;SPUrl=&amp;lt;SPUrl&amp;gt;&amp;amp;Title=&amp;lt;Title&amp;gt;&amp;amp;SPTMAppUrl=&amp;lt;SPTMAppUrl&amp;gt;&amp;amp;exsvurl=1&amp;amp;realm=contoso.com</EcpUrl-tmCreating>
        <EcpUrl-tmEditing>?rfr=olk&amp;amp;ftr=TeamMailboxEditing&amp;amp;Id=&amp;lt;Id&amp;gt;&amp;amp;exsvurl=1&amp;amp;realm=contoso.com</EcpUrl-tmEditing>
        <EcpUrl-extinstall>Extension/InstalledExtensions.slab?rfr=olk&amp;amp;exsvurl=1&amp;amp;realm=contoso.com</EcpUrl-extinstall>
        <OOFUrl>https://mail.contoso.com/EWS/Exchange.asmx</OOFUrl>
        <UMUrl>https://mail.contoso.com/EWS/UM2007Legacy.asmx</UMUrl>
        <OABUrl>https://mail.contoso.com/OAB/c21c7bc2-53b3-4ddc-ad89-1219b486c37c/</OABUrl>
        <ServerExclusiveConnect>off</ServerExclusiveConnect>
      </Protocol>
      <Protocol>
        <Type>EXPR</Type>
        <Server>mail.contoso.com</Server>
        <SSL>Off</SSL>
        <AuthPackage>Ntlm</AuthPackage>
        <ServerExclusiveConnect>on</ServerExclusiveConnect>
        <CertPrincipalName>None</CertPrincipalName>
      </Protocol>
      <Protocol>
        <Type>WEB</Type>
        <Internal>
          <OWAUrl AuthenticationMethod="Basic, Fba">https://mail.contoso.com/owa/</OWAUrl>
          <Protocol>
            <Type>EXCH</Type>
            <ASUrl>https://mail.contoso.com/EWS/Exchange.asmx</ASUrl>
          </Protocol>
        </Internal>
      </Protocol>
    </Account>
  </Response>
</Autodiscover>

Étapes suivantesNext steps

Une fois que vous avez extrait les informations de configuration nécessaires pour vos utilisateurs à partir du serveur, vous êtes prêt à communiquer avec Exchange pour effectuer les opérations de que votre application doit effectuer.After you've retrieved the necessary configuration details for your user from the server, you are ready to communicate with Exchange to do the things your application needs to do. La procédure à suivre dépend de la façon dont vous communiquez avec Exchange et que vous souhaitez obtenir.What you do next depends on how you communicate with Exchange and what you want to accomplish. Si vous devez inspiration, et à l’aide de EWS, peut étudier les exemples de code 101 Exchange pour certaines des idées.If you need some inspiration, and you're using EWS, you might explore the Exchange 101 code samples for some ideas.

Voir aussiSee also