[exchange-server] EWS API-알림 구독을 다시 만들 때 오류 발생

Office365 일정 폴더에 대한 끌어 오기 구독으로 작업 할 때 요청 ErrorReadEventsFailed에서 많은 메시지 를 받았습니다 SendNotification. 이 오류는 본질적으로 구독을 더 이상 찾을 수 없으며 서버가 더 이상 새 알림을 기대하지 않아야 함을 의미합니다.

Microsoft의 권장 오류 처리를 확인 하면 해결 방법은 Autodiscover를 사용하여 ExternalEwsUrl 또는 EwsPartnerUrl을 다시 검색하고 새 구독을 만드는 것입니다.

Office365에서는 OAuth2 서비스 계정 조합으로 AutoDiscovery 서비스가 거의 불가능 해 보이므로 https://outlook.office365.com/EWS/Exchange.asmx기본 EWS 끝점 으로 사용 하고 있습니다.

그러나 특정 일정 폴더에 대한 새 구독을 만들려고하면 일반 500 ErrorNoRespondingCASInDestinationSite오류가 계속 발생합니다.

대상 사이트의 클라이언트 액세스 서버가 요청을 처리 할 수 ​​없기 때문에 현재이 요청에 대해 Exchange 웹 서비스를 사용할 수 없습니다.

이상한 부분은 이것이 초기 ErrorReadEventsFailed오류를 받은 직후에만 발생한다는 것 입니다. 예를 들어 30 초 후에 다시 시도하면 요청이 문제없이 진행됩니다.

조사 결과 대부분의 사용자 X-AnchorMailbox는 서비스 계정이 가장하려는 사용자에 대해 헤더가 제대로 설정되었는지 확인하는 것이 도움이되는 것으로 보입니다 . 이 헤더를 다시 확인했으며 실제로 재 구독 요청과 함께 전송되고 있습니다.

이 문제는 지수 백 오프 솔루션으로 해결하거나 요청이 통과 될 때까지 X 번만 재 시도하여 해결할 수 있습니다. 구독이 “분실”되면 O365 서비스가 Exchange 서버의 DNS를 변경하는 데 시간이 필요한 것 같습니다 (내가 생각할 수있는 유일한 것입니다).

어떤 도움이라도 대단히 감사하겠습니다!



답변

https://msdn.microsoft.com/en-us/library/office/dn458788(v=exchg.150).aspx 의 설명서가 제공됩니다.

구독이 손실되거나 더 이상 액세스 할 수없는 경우 새 구독을 만들고 새 구독에 이전 워터 마크를 포함하지 않는 것이 가장 좋습니다. 이전 워터 마크로 다시 구독하면 이벤트에 대한 선형 스캔이 발생하여 비용이 많이 듭니다.

대신 새 구독을 만들고 폴더 속성을 비교하여 손실 된 구독과 새 구독 사이에 발생한 콘텐츠 변경 사항을 찾습니다. 확인하도록 권장하는 확장 폴더 속성은 PR_LOCAL_COMMIT_TIME_MAX (0x670a0040)PR_DELETED_COUNT_TOTAL (0x670b0003)입니다.

확장 속성 정의를 만들어이를 수행 할 수 있습니다. 도움이 될 것 같아요 !!


답변