自動検出を使用して構成情報を更新する

自動検出を使用して、Exchange 接続の構成情報をいつまたどのように更新するかについて説明します。

EWS アプリケーションを初めて実行するとき、自動検出は、ユーザーの Exchange メールボックスに接続するために必要な情報を収集する優れた方法です。 しかし、自動検出は初めての使用だけに適しているわけではありません。 定期的に自動検出を使用することで、アプリケーションを Exchange 展開の変化に対応させ、接続状態を保持することができます。

自動検出エンドポイントおよび EWS 設定のキャッシュ

自動検出を定期的に使用することをお勧めしますが、これを行うには考慮すべき事項があります。 環境の変化に対する迅速な対応と、数多く生成される不要なネットワーク トラフィックとのバランスをとるのが理想的です。 アプリケーションが初めて自動検出応答に成功した場合、EWS 要求を送信するたびに自動検出プロセスを繰り返さなくてもいいように、次の情報を保存してください。

表 1. 自動検出要求をキャッシュするための情報

キャッシュする設定 有効期間 詳細
自動検出エンドポイント
動作中
正常な応答が返された自動検出エンドポイントを保存すると、自動検出エンドポイントの一覧を生成して、正常な応答を取得するまで自動検出プロセスを繰り返す必要はありません。

: EWS のマネージ API は、自動検出エンドポイントのキャッシュをサポートしていません。
EWS URL および自動検出応答から取得したその他の設定
1 週間
EWS URL およびその他の関連設定を保存することによって、EWS 要求ごとに、またはアプリケーションを再起動するときに、新しい自動検出要求を送信する必要はありません。 ただし、EWS URL が動作するとしても、より最適なサーバーが使用可能な場合があります。

たとえば、ユーザーのメールボックスが新しいメールボックス サーバーに移動され、新しい優先 EWS エンドポイントが生成されるという場合です。 前回の自動検出要求から 1 週間後に新しい自動検出要求を送信して、ユーザー設定を更新することをお勧めします。 この時間は、アプリケーションの要件を満たすように調整することができます。

キャッシュされた構成情報を更新する

情報をキャッシュしたので、今度はそのキャッシュを最新の状態に保つ方法について調べてみましょう。 次の場合に、キャッシュされた情報を更新することをお勧めします。

  • 情報の有効期間の期限が切れている場合。

  • 接続関連のエラーが発生し、キャッシュされた情報が 1 時間以上前に最後に更新されました。

キャッシュされた情報を更新するには、キャッシュされた自動検出エンドポイントに自動検出要求を送信し、次の操作を行います。

  • 要求が成功したら、応答の EWS エンドポイントとキャッシュされた EWS エンドポイントを比較し、次の操作を行います。

    • 2 つのエンドポイントが異なる場合は、新しい EWS エンドポイントを使用します。 エラーから回復するために更新する場合は、新しいエンドポイントを使用して失敗した要求を再試行してください。

    • 2 つのエンドポイントが同じ場合は、元の EWS エンドポイントを引き続き使用します。 エラーから回復するために更新する場合は、必要に応じてエラーを処理します。

  • 要求が失敗した場合は、自動検出プロセスを最初から開始します。 正常な応答を取得したら、キャッシュされた自動検出エンドポイントを、正常な自動検出エンドポイントに置き換え、新しい EWS エンドポイントを引き続き使用します。 正常な応答を取得できなかった場合は、引き続き元の自動検出エンドポイントと EWS エンドポイントを使用します。 エラーから回復するために更新する場合は、必要に応じてエラーを処理します。

次の図は、このプロセスを視覚的に表したものです。

図 1. 自動検出を使用して構成情報を更新するプロセス

模式図は自動検出が構成情報を更新する方法を示しています。

キャッシュされた構成情報を更新すると、すべてではありませんが、一部のエラーを解決することができます。

表 2. キャッシュを更新することによって解決されたエラー

エラー EWS マネージ API の実装
DNS またはネットワーク障害のエラー

例: Host name could not be found. (ホスト名が見つかりませんでした。)
ServiceRemoteException
サーバーが見つからないか、サーバーにアクセスできなかったことを示すすべてのエラーは、自動検出を試みることによって解決される場合があります。

キャッシュされた EWS エンドポイントが有効ではなくなった可能性があります。自動検出によって新しいサーバーに誘導できる場合があります。
HTTP の状態エラー

例: 503 Service Unavailable (503 サービスを利用できません)
ServiceRemoteException
HTTP の状態エラーはさまざまな理由で発生します。

ただし、自動検出を実行して、ユーザーが新しい EWS エンドポイントを利用できるかどうか調べることをお勧めします。
EWS のエラー コード

例: ErrorConnectionFailed
ResponseCodeType
ほとんどの EWS のエラー コードは、構成情報の更新の根拠にはなりません。

ただし、次のエラー コードは、構成情報を更新する必要があることを明確に示しています。
- ErrorConnectionFailed
- ErrorMailboxMoveInProgress

関連項目