services office exchange ews c# exchange-server exchangewebservices ews-managed-api

c# - office - ''El servicio de detección automática no pudo ser localizado'' al intentar acceder a la cuenta de Exchange 2010 con la API GESTIONADA DE EWS



exchange web services api (10)

Compruebe si la contraseña de este correo electrónico ha experimentado.

Si la contraseña ha caducado, recibirá este error de Autodiscover.

Estoy usando la URL del servicio de descubrimiento automático para una dirección de correo electrónico específica.

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());

Si me gusta esto estoy recibiendo un error:

El servicio de detección automática no pudo ser localizado

¿Qué tengo que hacer para evitar este error?


Experimenté el mismo problema con Exchange 2013. En mi caso, la causa fue una declaración de Proxy predeterminado en mi archivo de configuración, que probablemente impidió que el servicio de Detección automática funcionara correctamente.

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

Después de comentar la etiqueta <defaultProxy> , <defaultProxy> pudo encontrar la URL del servicio.


He golpeado esto y una traza muestra que después de usar el proxy para acceder a 365 se inicia una búsqueda de DNS para un registro SVC. Esta búsqueda va al DNS interno y no al proxy, nuestro DNS interno no resuelve las entradas de DNS externas, es por eso que tenemos servidores proxy. Aún no descubrí por qué está haciendo una búsqueda de DNS en lugar de usar los servidores proxy, pero eso es lo que está causando nuestra versión de este problema


He utilizado Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx") directa Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx") y funcionó para mí. Puede intentar usar Fiddler y eM Client para ver cómo usan la EWS Manged API para hacer las cosas y replicar las llamadas.



Para el registro de integridad:

Nos encontramos con un servicio que de repente se detuvo con este error en particular. Como el servicio se había ejecutado sin supervisión durante meses, al utilizar EWS para monitorear un buzón, resultó que la contraseña había caducado. Esto causó que AutoDiscovery fallara con la misma excepción:

El servicio de detección automática no pudo ser localizado

La actualización de la contraseña del usuario de Exchange en el AD y la verificación de la propiedad La Password Never Expires resolvió el problema por nosotros.


Permítanme señalar que si está intentando acceder a Office 365, las credenciales web realmente tienen el formato WebCredentials (strUsername, strPassword); siendo strUsername la dirección de correo electrónico de la cuenta a la que intenta acceder.

Recibí este error y resultó que alguien había cambiado la contraseña de la cuenta sin informarme. ¡Qué error tan extraño cuando se trata de una contraseña incorrecta!


Te recomendaré habilitar Traces, para lograr esto sigue:

Service.TraceEnabled = true;

Me encontré con el mismo problema que cuando habilité los rastreos, estos rastros te guiarán a lo que está sucediendo exactamente. En mi caso, el problema del certificado SSL está ahí para resolverlo.

Puede haber muchos problemas como:

  • El usuario puede ser bloqueado.
  • El DSN no puede encontrar autodiscover.domain.com

Tienes Service.Credentials incorrecto, Service.Credentials así:

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

Usando credenciales de dominio, no la dirección de correo electrónico.

También doble verificación de lo siguiente:

  1. La versión que especifique en el new ExchangeService() coincide con el servidor
  2. el parámetro pasado a Service.AutodiscoverUrl(); es correcto (dirección de correo electrónico que datos deben ser recuperados)

Lo siguiente funciona para mí (en una nueva aplicación de consola):

// 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


intenta usar esto:

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

Este no

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

note que el nombre de usuario es ''john'' NOT ''[email protected]'' , me bloqueó durante unas horas por usar el segundo ...