Exchange における EWS での通知関連エラーの処理Handling notification-related errors in EWS in Exchange

Exchange の EWS マネージ API または EWS を使用して、開発したアプリケーションの通知に関連するエラーを処理する方法を確認します。Find out how to handle notification-related errors in applications that you develop by using the EWS Managed API or EWS in Exchange.

アプリケーションが通知をサブスクライブして取得する場合、通知に関連するエラーを処理する必要があります。これらのエラーは実行時、または EWS アプリケーションを開発するときに処理することができます。If your application subscribes to and gets notifications, you might have to handle notification-related errors. You can handle these errors at runtime, or while you are developing your EWS application.

表 1. 通知に関連するエラーとその処理方法Table 1.  Notification-related errors and how to handle them

エラーError 発生するタイミングOccurs when you try to… 処理方法Handle it by…
ErrorExceededConnectionCountErrorExceededConnectionCount アカウントがストリーミング接続の接続制限に達したときに、接続を開いてイベントを取得する場合。Open a connection to get events when the account reached its connection limit of open streaming connections.
  • 偽装を使用して、接続を開くUsing impersonation to open connections.
  • より少ない接続を使用してイベントを取得する。Using fewer connections to get events. アフィニティを使用して、同じグループに最大 200 のサブスクリプション ID を配置することで、各接続のサブスクリプション数を最大にします。Using fewer connections to get events. Maximize the number of subscriptions in each connection by using affinity and placing a maximum of 200 subscription IDs in the same group. You can then use the same connection to retrieve events for the entire group, reducing the number of connections required. これで、同じ接続を使用して、グループ全体のイベントを取得し、必要な接続の数を削減することができるようになります。Using fewer connections to get events. Maximize the number of subscriptions in each connection by placing a maximum of 200 subscription IDs in the same group. You can then use the same connection to retrieve events for the entire group, reducing the number of connections required.
  • オンプレミスの Exchange の web.config ファイルで HangingConnectionLimit の値を変更し、3 つの開いている接続の既定値をオーバーライドする。Exchange Online には、10 の既定の HangingConnectionLimit があり、これを構成することはできません。Changing the value of the HangingConnectionLimit in the web.config file for Exchange on-premises to override the default value of three open connections. Exchange Online has a default HangingConnectionLimit of 10, which is not configurable.
ErrorExceededSubscriptionCountErrorExceededSubscriptionCount 作成するサブスクリプションが多すぎる場合。Create too many subscriptions. EwsMaxSubscriptions 調整ポリシー パラメーターが、アカウントで作成できるサブスクリプションの最大数を決定します。Create too many subscriptions. The EwsMaxSubscriptionshttp://msdn.microsoft.com/en-us/library/microsoft.exchange.data.directory.systemconfiguration.throttlingpolicy.ewsmaxsubscriptions(v=exchg.150).aspx throttling policy parameter determines the maximum number of subscriptions that an account can create.
ErrorInvalidSubscriptionRequestErrorInvalidSubscriptionRequest 1 つの要求から複数のメールボックスまたは複数のフォルダーに対してサブスクリプションを作成する場合。Create subscriptions for multiple mailboxes or multiple folders from a single request. 1 つの要求で 1 つのパブリック フォルダーまたは 1 つのメールボックスに対してサブスクリプションを作成する。Creating a subscription for a single public folder or a single mailbox in a single request.
ErrorInvalidWatermarkErrorInvalidWatermark 無効な基準値を使用してイベントを取得する場合。Get events by using an invalid watermark.
  • 前の応答で返されたサブスクリプション ID を確認する。Checking the subscription ID returned in a previous response.
  • 正しい ExchangeService オブジェクトのサブスクリプション ID を送信していることを確認する。Ensuring that you’re sending the subscription ID for the correct ExchangeService object.
  • 新しいサブスクリプションを作成するCreating a new subscription.
ErrorMissedNotificationEventsErrorMissedNotificationEvents 以前のイベントがないイベントを取得する場合。Get events when some previous events were missed. 拡張フォルダーのプロパティ PR_LOCAL_COMMIT_TIME_MAX (0x670a) と PR_DELETED_COUNT_TOTAL (0x670b) を比較し、どの変更がないのかを特定し、新しいサブスクリプションを作成するComparing the extended folder properties PR_LOCAL_COMMIT_TIME_MAX (0x670a) and PR_DELETED_COUNT_TOTAL (0x670b) to determine what changes were missed, and creating a new subscription.
ErrorProxyRequestNotAllowedErrorProxyRequestNotAllowed メールボックスが別のサイトに移動しているユーザーに対して、バッチ要求でイベントをサブスクライブする場合。Subscribe to events for a user in a batched request whose mailbox has moved to another site. 自動検出を使用して、ExternalEwsUrl または EwsPartnerUrl を再検出し、新しいサブスクリプションを作成する。Using Autodiscover to rediscover the ExternalEwsUrl or EwsPartnerUrl, and creating a new subscription.
ErrorReadEventsFailedErrorReadEventsFailed 見つからないサブスクリプションからイベントを取得する場合。Get events from a subscription that cannot be found. 自動検出を使用して、ExternalEwsUrl または EwsPartnerUrl を再検出し、新しいサブスクリプションを作成する。Using Autodiscover to rediscover the ExternalEwsUrl or EwsPartnerUrl, and creating a new subscription.
ErrorServerBusyErrorServerBusy 調整制限を超過した場合。Exceed throttling limits. 調整に関する次の点に注意してください。Exceed throttling limits. Be aware of the following regarding throttling:
  • EwsMaxSubscriptions 調整制限により、一度にアクティブにできるプッシュ、プル、またはストリーミングの通知サブスクリプションの最大数が指定されます。The EwsMaxSubscriptions throttling limit identifies the maximum number of push, pull, or streaming notification subscriptions that can be active at one time. これはメールボックスのサブスクリプションの値です。メールボックス サブスクリプション内にある個々のフォルダーのサブスクリプション数ではありません。This is the value of mailbox subscriptions, not the number of individual folder subscriptions in a mailbox subscription. サービス メールボックスのバージョン 14.16.0135 および 14.15.0057.000 以降では、Exchange Online または Office 365 の一部としての Exchange Online によってホストされるメールボックスは、最大 20 のサブスクリプション、対象になる Exchange 2013 のオンプレミスのメールボックスは最大 5,000 のサブスクリプションを持つことができます。The EwsMaxSubscriptionshttp://msdn.microsoft.com/en-us/library/microsoft.exchange.data.directory.systemconfiguration.throttlingpolicy.ewsmaxsubscriptions(v=exchg.150).aspx throttling limit identifies the maximum number of push, pull, or streaming notification subscriptions that can be active at one time. This is the value of mailbox subscriptions, not the number of individual folder subscriptions in a mailbox subscription. Starting with service mailbox versions 14.16.0135 and 14.15.0057.000, a mailbox hosted by Exchange Online or Exchange Online as part of Office 365 can have up to 20 subscriptions, and a target Exchange 2013 on-premises mailbox can have up to 5000 subscriptions.
  • EwsMaxConcurrency 調整制限により、非ストリーミング接続のアクティブな要求の最大数が指定されます。既定値は 27 です。The EwsMaxConcurrencyhttp://msdn.microsoft.com/en-us/library/microsoft.exchange.data.directory.systemconfiguration.throttlingpolicy.ewsmaxconcurrency(v=exchg.150).aspx throttling limit identifies the maximum number of active requests for non-streaming connections and has a default value of 27.
  • 開いているストリーミング接続の既定の制限値は 10 です。The default limit for open streaming connections is ten.
  • 通知に関連する調整ポリシーの影響を考慮し、アプリケーションが調整されないようにアクティブなサブスクリプションとアクティブな接続の数を制限する。Considering the implications of the notification-related throttling policies and limiting the number of active subscriptions and active connections so that the application is not throttled.
  • より少ない接続を使用してイベントを取得する。Using fewer connections to get events. 同じグループに最大 200 のサブスクリプション ID を配置することで、各接続のサブスクリプション数を最大にします。Using fewer connections to get events. Maximize the number of subscriptions in each connection by placing a maximum of 200 subscription IDs in the same group. You can then use the same connection to retrieve events for the entire group, reducing the number of connections required. これで、同じ接続を使用して、グループ全体のイベントを取得し、必要な接続の数を削減することができるようになります。Using fewer connections to get events. Maximize the number of subscriptions in each connection by placing a maximum of 200 subscription IDs in the same group. You can then use the same connection to retrieve events for the entire group, reducing the number of connections required.
  • web.config ファイルの HangingConnectionLimit の値を変更し、開くことができるストリーミング接続の既定値 10 をオーバーライドする。Changing the value of the HangingConnectionLimit in the web.config file to override the default value of ten open streaming connections.
ErrorSubscriptionNotFoundErrorSubscriptionNotFound 見つからないサブスクリプションのイベントを取得する場合。サブスクリプションの期限が切れているか、EWS のプロセスが再起動されている可能性があります。または無効なサブスクリプションが渡されました。Get events for a subscription that cannot be found. The subscription might have expired, the EWS process might have been restarted, or an invalid subscription was passed in.
  • 前の応答で返されたのと同じサブスクリプション ID を使用していることを確認する。Verifying that you’re using the same subscription ID that was returned in a previous response.
  • 正しい ExchangeService オブジェクトのサブスクリプション ID を送信していることを確認する。Ensuring that you’re sending the subscription ID for the correct ExchangeService object.
  • 新しいサブスクリプションを作成するCreating a new subscription.
ServiceLocalExceptionServiceLocalException サブスクリプションの接続が別のフォルダーで開いている間に、新しいフォルダーにサブスクリプションを追加します。Add a subscription to a new folder while a subscription connection is open on another folder. サブスクリプションを変更して、特定のフォルダーではなく、メールボックス内のすべてのフォルダーをサブスクライブする。Changing your subscription to subscribe to all folders in the mailbox, instead of a specific folder.
ServiceResponseExceptionServiceResponseException Exchange ストア内にないサブスクリプションのイベントを取得する場合。Get events for a subscription that cannot be located in the Exchange store.
  • 前の応答で返されたのと同じサブスクリプション ID を使用していることを確認する。Verifying that you’re using the same subscription ID that was returned in a previous response.
  • 正しい ExchangeService オブジェクトのサブスクリプション ID を送信していることを確認する。Ensuring that you’re sending the subscription ID for the correct ExchangeService object.

失われたサブスクリプションから回復するRecovering from lost subscriptions

サブスクリプションが失われる、またはアクセスできなくなった場合は、新しいサブスクリプションを作成し、新しいサブスクリプションに古い基準値を含めないことをお勧めします。When a subscription is lost, or is no longer accessible, it is best to create a new subscription and not include the old watermark in the new subscription. 古い基準値を使用して再度サブスクライブすると、イベントが線形にスキャンされるためコストがかかります。Resubscribing with the old watermark causes a linear scan for events, which is costly. 代わりに、新しいサブスクリプションを作成し、フォルダーのプロパティを比較して、失われたサブスクリプションと新しいサブスクリプションの間で発生したコンテンツ変更を検索します。Instead, create a new subscription and compare folder properties to look for content changes that occurred between the lost subscription and the new subscription. 確認することをお勧めする拡張フォルダー プロパティは、PR_LOCAL_COMMIT_TIME_MAX (0x670a0040) と PR_DELETED_COUNT_TOTAL (0x670b0003) です。The extended folder properties that we recommend that you check are PR_LOCAL_COMMIT_TIME_MAX (0x670a0040) and PR_DELETED_COUNT_TOTAL (0x670b0003). これを行うには、拡張プロパティの定義を作成しますYou can do this by creating an extended property definition.

関連項目See also