exchange server - software - API de EWS: error al volver a crear suscripciones de notificación
install exchange web services (1)
Cuando trabajo con suscripciones de extracción a las carpetas de calendario de Office365, recibo muchos mensajes
ErrorReadEventsFailed
en la solicitud
SendNotification
.
Este error esencialmente significa que ya no se puede encontrar la suscripción y que el servidor ya no debería esperar nuevas notificaciones.
Al verificar el manejo de errores recomendado por Microsoft , la solución es utilizar la Detección automática para redescubrir ExternalEwsUrl o EwsPartnerUrl y crear una nueva suscripción.
Con Office365, el servicio AutoDiscovery parece casi imposible con una combinación de cuentas de servicio OAuth2, por lo que he estado usando
https://outlook.office365.com/EWS/Exchange.asmx
como el punto final principal de EWS.
Sin embargo, cuando intento crear una nueva suscripción para la carpeta de calendario específica, sigo recibiendo un error genérico
500 ErrorNoRespondingCASInDestinationSite
:
Los servicios web de Exchange no están disponibles actualmente para esta solicitud porque ninguno de los servidores de acceso de cliente en el sitio de destino podría procesar la solicitud.
Lo extraño es que
esto solo ocurre directamente después de recibir el error inicial
ErrorReadEventsFailed
.
Si vuelvo a intentarlo en, digamos, 30 segundos, la solicitud se procesa sin problemas.
Después de investigar un poco, parecía que a la mayoría de los usuarios les resultaba útil asegurarse de que el encabezado
X-AnchorMailbox
estuviera configurado correctamente para el usuario que la cuenta de servicio desea suplantar.
Verifiqué dos veces este encabezado, y de hecho se está enviando junto con la solicitud para volver a suscribirse.
Este problema puede resolverse mediante una solución de retroceso exponencial, o simplemente volviendo a intentar X cantidad de veces hasta que se complete la solicitud. Me parece que cuando la suscripción se "pierde", el servicio O365 necesita tiempo para cambiar el DNS del servidor de Exchange (es lo único que se me ocurre).
Cualquier ayuda sería muy apreciada!
Dada la documentación en: https://msdn.microsoft.com/en-us/library/office/dn458788(v=exchg.150).aspx
Cuando se pierde una suscripción o ya no se puede acceder a ella, es mejor crear una nueva suscripción y no incluir la antigua marca de agua en la nueva suscripción. Volver a suscribirse con la antigua marca de agua provoca una exploración lineal de eventos, lo cual es costoso.
En su lugar, cree una nueva suscripción y compare las propiedades de la carpeta para buscar cambios de contenido que ocurrieron entre la suscripción perdida y la nueva suscripción.
Las propiedades de la carpeta extendida que recomendamos que verifique son
PR_LOCAL_COMMIT_TIME_MAX (0x670a0040)
y
PR_DELETED_COUNT_TOTAL (0x670b0003)
.
Puede hacer esto creando una definición de propiedad extendida. ¡Creo que esto puede ayudarte!