Al trabajar con suscripciones de extracción a carpetas de calendario de Office365, recibí muchos ErrorReadEventsFailed
mensajes en la SendNotification
solicitud. Este error esencialmente significa que la suscripción ya no se puede encontrar y el servidor ya no debería esperar nuevas notificaciones.
Al verificar el manejo de errores recomendado por Microsoft , la solución es usar 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 lo 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 500 ErrorNoRespondingCASInDestinationSite
error genérico :
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 pudo procesar la solicitud.
Lo extraño es que esto solo sucede directamente después de recibir el ErrorReadEventsFailed
error inicial . Si lo intento de nuevo en, digamos, 30 segundos, la solicitud se procesa sin problemas.
Después de investigar un poco, pareció que a la mayoría de los usuarios les resultó útil asegurarse de que el X-AnchorMailbox
encabezado estaba 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 Exchange (es lo único que se me ocurre).
¡Cualquier ayuda será muy apreciada!
X-AnchorMailbox
encabezado y usar la cookie de backend de Exchange en las solicitudes. Parece que se arregla solo con el tiempo (entre 30 segundos y un día completo).Respuestas:
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 marca de agua anterior en la nueva suscripción. Volver a suscribirse con la antigua marca de agua provoca un escaneo 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 carpeta extendida que le recomendamos que compruebe son
PR_LOCAL_COMMIT_TIME_MAX (0x670a0040)
yPR_DELETED_COUNT_TOTAL (0x670b0003)
.Puede hacer esto creando una definición de propiedad extendida. ¡Creo que esto puede ayudarte!
fuente