Exchange における EWS での通知関連エラーの処理
Exchange の EWS マネージ API または EWS を使用して、開発したアプリケーションの通知に関連するエラーを処理する方法を確認します。
アプリケーションが通知をサブスクライブして取得する場合、通知に関連するエラーを処理する必要があります。 これらのエラーは実行時、または EWS アプリケーションを開発するときに処理することができます。
表 1. 通知に関連するエラーと、それらを処理する方法
エラー | 発生するタイミング | 処理方法 |
---|---|---|
ErrorExceededConnectionCount | アカウントがストリーミング接続の接続制限に達したときに、接続を開いてイベントを取得する場合。 |
|
ErrorExceededSubscriptionCount | 作成するサブスクリプションが多すぎる場合。 EwsMaxSubscriptions 調整ポリシー パラメーターが、アカウントで作成できるサブスクリプションの最大数を決定します。 |
|
ErrorInvalidSubscriptionRequest | 1 つの要求から複数のメールボックスまたは複数のフォルダーに対してサブスクリプションを作成する場合。 | 1 つの要求で 1 つのパブリック フォルダーまたは 1 つのメールボックスに対してサブスクリプションを作成する。 |
ErrorInvalidWatermark | 無効な基準値を使用してイベントを取得する場合。 |
|
ErrorMissedNotificationEvents | 以前のイベントがないイベントを取得する場合。 | 拡張フォルダーのプロパティ PR_LOCAL_COMMIT_TIME_MAX (0x670a) と PR_DELETED_COUNT_TOTAL (0x670b) を比較し、どの変更がないのかを特定し、新しいサブスクリプションを作成する。 |
ErrorProxyRequestNotAllowed | メールボックスが別のサイトに移動しているユーザーに対して、バッチ要求でイベントをサブスクライブする場合。 | 自動検出を使用して、ExternalEwsUrl または EwsPartnerUrl を再検出し、新しいサブスクリプションを作成する。 |
ErrorReadEventsFailed | 見つからないサブスクリプションからイベントを取得する場合。 | 自動検出を使用して、ExternalEwsUrl または EwsPartnerUrl を再検出し、新しいサブスクリプションを作成する。 |
ErrorServerBusy | 調整制限を超過した場合。 調整に関する次の点に注意してください。
|
|
ErrorSubscriptionNotFound | 見つからないサブスクリプションのイベントを取得します。 サブスクリプションの有効期限が切れているか、EWS プロセスが再起動されたか、無効なサブスクリプションが渡された可能性があります。 |
|
ServiceLocalException | サブスクリプションの接続が別のフォルダーで開いている間に、新しいフォルダーにサブスクリプションを追加します。 | サブスクリプションを変更して、特定のフォルダーではなく、メールボックス内のすべてのフォルダーをサブスクライブする。 |
ServiceResponseException | Exchange ストア内にないサブスクリプションのイベントを取得する場合。 |
|
失われたサブスクリプションから回復する
サブスクリプションが失われる、またはアクセスできなくなった場合は、新しいサブスクリプションを作成し、新しいサブスクリプションに古い基準値を含めないことをお勧めします。 古い基準値を使用して再度サブスクライブすると、イベントが線形にスキャンされるためコストがかかります。 代わりに、新しいサブスクリプションを作成し、フォルダーのプロパティを比較して、失われたサブスクリプションと新しいサブスクリプションの間で発生したコンテンツ変更を検索します。 確認することをお勧めする拡張フォルダー プロパティは、PR_LOCAL_COMMIT_TIME_MAX (0x670a0040) と PR_DELETED_COUNT_TOTAL (0x670b0003) です。 これを行うには、拡張プロパティの定義を作成します。