EWS で StreamingSubscriptionConnection を使用する場合の自動再接続StreamingSubscriptionConnection
で提案されているように、最大である 30 分の有効期間を持つオブジェクトを作成し、自動的に再オープンします。
この時点まで、すべてが正常に機能します。ただし、最初の自動再接続の後、接続を閉じて新しいサブスクリプションを追加したい場合、接続を再度開くと、「サブスクリプションに対して別の接続が開かれています」と言って例外が発生し始め
ます。これが起こり、それを解決する方法
2 に答える
今日、アプリでまったく同じ領域に膝を突っ込んでいるときに、あなたの質問が寄せられたのはおかしいです! これについての私の理解では、Exchange サポートの関係者とやり取りした後、OnDisconnect イベント ハンドラーで新しいサブスクリプションを追加 (または不要なサブスクリプションを削除) することしかできないということです。私はあなたと同様の手順を試しましたが、ハンドラーの外で行うと同じ種類のエラーが発生します。アプリで新しいサブスクリプションを比較的迅速に追加する必要があるため、ストリーミング接続のタイムアウトを短くする傾向があります (たとえば 3 分)。これにより、より頻繁に TCP セッションを確立するためのオーバーヘッドが追加されることがわかりました。長い目で見れば、これがどれほど悪いことかはわかりません。裏では、ストリーミング通知は長いポーリングを行っているだけなので、大量の通知を受け取っている場合は、
ストリーミング通知の概念は素晴らしいですが、これまでのドキュメントに基づいています。つまり、このようなさまざまなブログやフォーラム、そしてほとんど役に立たない MSDN のリファレンスを見て、私は予想もしていなかったかなり不快な冒険に出かけたような沈んだ気持ちになります。
... 古い質問 ...
私はこのドキュメントを見つけました...最初に購読を解除してから、接続を閉じてください。動作しますが、両方のイベント ハンドラーを呼び出します。最初の ErrorHandler (例外: サブスクリプションがサブスクライブ解除されました?!?) と、DisconnectHandler よりも。したがって、このイベントを通常のエラー/切断イベントと区別するには、「外部」ロジックでハンドラーを微調整する必要があります...非常に直感的ではありません...私はEWS全体について同じ否定的な感情を持っています)-: