web-dev-qa-db-ja.com

EWSAPI-通知サブスクリプションの再作成時にエラーが発生しました

Office365カレンダーフォルダーへのプルサブスクリプションを操作しているときに、ErrorReadEventsFailedリクエストで多くのSendNotificationメッセージを受け取りました。このエラーは基本的に、サブスクリプションが見つからなくなり、サーバーが新しい通知を予期しないことを意味します。

チェック Microsoftが推奨するエラー処理 、解決策は、自動検出を使用してExternalEwsUrlまたはEwsPartnerUrlを再検出し、新しいサブスクリプションを作成することです。

Office365では、OAuth2サービスアカウントの組み合わせではAutoDiscoveryサービスがほぼ不可能に見えるため、メインのEWSエンドポイントとしてhttps://Outlook.office365.com/EWS/Exchange.asmxを使用しています。

ただし、特定のカレンダーフォルダーの新しいサブスクリプションを作成しようとすると、一般的な500 ErrorNoRespondingCASInDestinationSiteエラーが発生し続けます。

宛先サイトのどのクライアントアクセスサーバーも要求を処理できなかったため、ExchangeWebサービスは現在この要求に使用できません。

奇妙な部分はこれは最初のErrorReadEventsFailedエラーを受け取った直後にのみ発生します。たとえば30秒以内に再試行すると、リクエストは問題なく通過します。

調査を行った結果、ほとんどのユーザーは、サービスアカウントが偽装したいユーザーに対して、X-AnchorMailboxヘッダーが適切に設定されていることを確認すると役立つように思われました。このヘッダーを再確認しましたが、実際に再サブスクライブのリクエストに沿って送信されています。

この問題は、指数バックオフソリューションによって、または要求が完了するまでX回再試行することで解決できる場合があります。サブスクリプションが「失われる」と、O365サービスはExchangeサーバーのDNSを変更するのに時間がかかるように思われます(私が考えることができるのはそれだけです)。

どんな助けでも大歓迎です!

81
jstruzik

与えられたドキュメント: https://msdn.Microsoft.com/en-us/library/office/dn458788(v = exchg.150).aspx

サブスクリプションが失われた場合、またはアクセスできなくなった場合は、新しいサブスクリプションを作成し、新しいサブスクリプションに古い透かしを含めないことをお勧めします。古い透かしで再サブスクライブすると、イベントの線形スキャンが発生し、コストがかかります。

代わりに、新しいサブスクリプションを作成し、フォルダーのプロパティを比較して、失われたサブスクリプションと新しいサブスクリプションの間で発生したコンテンツの変更を探します。チェックすることをお勧めする拡張フォルダのプロパティは、PR_LOCAL_COMMIT_TIME_MAX (0x670a0040)PR_DELETED_COUNT_TOTAL (0x670b0003)です。

これを行うには、拡張プロパティ定義を作成します。これはあなたを助けるかもしれないと思います!!

2
Manoj S