Manejo de los mensajes de error de Autodiscover

Obtenga información sobre los diferentes tipos de errores de detección automática y qué hacer con ellos.

La detección automática permite a las aplicaciones recuperar información de configuración automáticamente y funciona muy bien. Sin embargo, las cosas no siempre van según el plan. Echemos un vistazo a los errores comunes que pueden producirse y cómo puede controlarlos para minimizar la necesidad de pedir al usuario que configure manualmente el cliente.

Errores de estado HTTP

El primer tipo de error que puede encontrar al enviar solicitudes de detección automática es el estado HTTP. Si el estado HTTP de la respuesta es distinto de 200 (Aceptar), la carga de respuesta no contiene la respuesta de detección automática que estaba buscando. Por motivos de simplicidad, podemos agrupar códigos de estado que no sean 200 en tres categorías.

Tabla 1. Códigos de estado HTTP

Código de estado Tipo de error Para controlar...
301 o 302
Error de redireccionamiento
Vuelva a enviar la solicitud al URI contenido en el encabezado de respuesta HTTP "Ubicación". Para obtener más información, consulte Control de errores de redireccionamiento.
401
Error no autorizado
Dado que el proceso de detección automática implica probar varias direcciones URL potenciales, podría obtenerlo en una dirección URL solo para que la siguiente acepte sus credenciales. Por este motivo, no debe considerar un único error 401 para indicar que las credenciales no son válidas. Sin embargo, si recibe errores 401 de varias direcciones URL, es posible que desee pedir al usuario que vuelva a escribir su contraseña (si es posible).
Cualquier otro estado distinto de 200
Error de punto de conexión de detección automática no válido
Considere que la dirección URL que devuelve cualquier otro código de estado que no sea 200 no es válida y siga intentando la siguiente dirección URL de la lista.

Errores de detección automática

Incluso si obtiene un código de estado 200 (Correcto) después de enviar una solicitud de detección automática, eso no significa que el servidor haya enviado la información que necesita. El estado 200 solo significa que tiene una respuesta de detección automática y que la respuesta podría contener un error dentro de la carga. La ubicación de la información de error varía en función de si el formato es SOAP o POX.

Errores de detección automática de SOAP

Para la detección automática de SOAP, la respuesta puede contener uno o varios elementos ErrorCode (SOAP) en diferentes lugares. Normalmente, puede esperar uno como elemento secundario del elemento Response (SOAP) y otro como elemento secundario de cada elemento UserResponse (SOAP) de la respuesta. También puede encontrar uno como elemento secundario de un elemento UserSettingError (SOAP), si está presente. El contexto del error depende de dónde se encuentre el elemento ErrorCode , como se indica a continuación:

  • Como elemento secundario del elemento Response , el elemento ErrorCode representa un error que se aplica a toda la solicitud.

  • Como elemento secundario del elemento UserResponse , representa un error que se aplica solo a ese usuario específico.

  • Como elemento secundario de un elemento UserSettingError , representa un error que se aplica a una configuración específica que se solicitó.

Echemos un vistazo a un ejemplo de una respuesta. En este ejemplo, el elemento ErrorCode del elemento Response tiene un valor de "NoError", lo que indica que se ha realizado correctamente. Sin embargo, el elemento ErrorCode del elemento UserResponse tiene un valor de "RedirectAddress", que indica que se produjo un error para ese usuario determinado.

<?xml version="1.0" encoding="utf-8"?>
<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>14</h:MajorVersion>
      <h:MinorVersion>3</h:MinorVersion>
      <h:MajorBuildNumber>136</h:MajorBuildNumber>
      <h:MinorBuildNumber>1</h:MinorBuildNumber>
      <h:Version>Exchange2010_SP2</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>elvin@mail.contoso.com</RedirectTarget>
            <UserSettingErrors />
            <UserSettings />
          </UserResponse>
        </UserResponses>
      </Response>
    </GetUserSettingsResponseMessage>
  </s:Body>
</s:Envelope>

El artículo ErrorCode (SOAP) contiene una lista completa de posibles errores. La mayoría de ellos indican un error irrecuperable, pero algunos garantizan un control especial.

Tabla 2. Valores de ErrorCode de distribución automática de SOAP

Valor de ErrorCode Para controlar...
RedirectAddress
Reiniciar la detección automática con una nueva dirección de correo electrónico con la dirección de correo electrónico en el elemento RedirectTarget (SOAP).
RedirectUrl
Volver a enviar la solicitud a una nueva dirección URL a la dirección URL del elemento RedirectTarget .
ServerBusy
Vuelva a intentar esta dirección URL después de un pequeño retraso. Puede esperar una cantidad de tiempo establecida o simplemente mover esta dirección URL al final de la lista de direcciones URL para intentarlo. Si recibe este error varias veces desde una dirección URL, debe considerar que la dirección URL no es válida.

Errores de detección automática de POX

El servicio de detección automática pox notifica errores de forma un poco diferente. Los errores no recuperables se encuentran en el elemento Error (POX). El artículo ErrorCode (POX) contiene una lista completa de posibles códigos de error.

Los errores de redireccionamiento se encuentran en el elemento Action (POX). Cualquier valor del elemento Action distinto de "settings" indica un error de redirección.

Tabla 3. Valores de Código de error de distribución automática de POX

Valor de acción Para controlar...
redirectAddr
Reiniciar la detección automática con una nueva dirección de correo electrónico con la dirección de correo electrónico en el elemento RedirectAddr (POX).
redirectUrl
Volver a enviar la solicitud a una nueva dirección URL a la dirección URL en el elemento RedirectUrl (POX).

En este ejemplo, el elemento Action tiene un valor de "redirectAddr", que indica que se debe enviar una nueva solicitud con la nueva dirección de correo electrónico contenida en el elemento RedirectAddr .

<?xml version="1.0" encoding="utf-8"?>
<Autodiscover xmlns="https://schemas.microsoft.com/exchange/autodiscover/responseschema/2006">
  <Response xmlns="https://schemas.microsoft.com/exchange/autodiscover/outlook/responseschema/2006a">
    <Account>
      <Action>redirectAddr</Action>
      <RedirectAddr>elvin@mail.contoso.com</RedirectAddr>
    </Account>
  </Response>
</Autodiscover>

Control de errores de redireccionamiento

Puede controlar los escenarios de error de redirección de dos maneras:

  • Reiniciando detección automática con una nueva dirección de correo electrónico.

  • Reenviando la solicitud a una nueva dirección URL.

Ambos escenarios requieren cierta validación antes de continuar.

Reinicio de la detección automática con una nueva dirección de correo electrónico

Cuando obtenga una nueva dirección de correo electrónico en una respuesta de redireccionamiento de detección automática, compruebe primero que la nueva dirección de correo electrónico que se proporcionó en la respuesta de error de redirección no es la misma dirección que envió en la solicitud que produjo el error. Si es así, no debe reiniciar detección automática y, en su lugar, considerar que la dirección URL que generó la respuesta no es válida.

Si la nueva dirección de correo electrónico es diferente, descarte la lista existente de posibles direcciones URL de punto de conexión de detección automática y genere una nueva lista basada en la nueva dirección de correo electrónico.

Volver a enviar la solicitud a una nueva dirección URL

Al obtener una nueva dirección URL en una respuesta de redireccionamiento de detección automática, primero debe validar la dirección URL de la siguiente manera:

  • Compruebe que la dirección URL es una dirección URL HTTPS.

  • Compruebe que no ha recibido un error de esta dirección URL con la dirección de correo electrónico actual antes.

  • Si es aplicable a la aplicación, informe al usuario del redireccionamiento y obtenga su permiso para seguir la redirección.

  • Envíe una solicitud a la dirección URL y compruebe que el certificado SSL presentado por el servidor es válido.

Si la dirección URL pasa la validación, vuelva a enviar la solicitud a esta nueva dirección URL.

Consulte también