2015-01-07 127 views
3

我們使用針對Office 365的Exchange Web服務(EWS)API在用戶的日曆中創建日曆事件。這適用於本地部署,但對於Office 365部署,我們似乎很快就達到了限制限制。Office 365 EWS日曆訪問給出ErrorTooManyObjectsOpened

ErrorTooManyObjectsOpened - Too many concurrent connections opened

〜5分鐘後,這個錯誤:

創建16個事件,在16級不同的用戶的日曆(從服務帳戶,使用代理訪問日曆),我們收到以下錯誤後清除,我們可以繼續創建活動。 EWS服務器似乎緩存到郵箱的連接,Office 365似乎只允許一次連接到16個郵箱。

我們嘗試了很多以克服此錯誤,但尚未找到「最終」解決方案或解決方法。我們嘗試過的:

  • 使用模擬而不是委託:這種方式有效,但是從安全角度來看,這是一種禁止行爲。
  • 使用多個服務帳戶:這是有效的,儘管每個帳戶仍然限制在每5分鐘約16個用戶。
  • 我們嘗試使用X-AnchorMailboxX-PreferServerAffinity標題,並且我們使用和不使用HTTP的請求保持活動狀態,並且保留和不保存HTTP cookie.This沒有任何區別。從調試信息中我們可以看到,如果我們保留cookie /連接,我們通常會在相同的前端和後端服務器上結束,而如果我們放棄Cookie,但最終發送到不同的前端,則發送X-AnchorMailbox頭。
  • 我們還沒有嘗試過REST API,因爲client credential flow is not available yet

只有CreateItems電話似乎引起這個問題,我們可以做許多用戶的FindItems沒有擊中的限制。

有沒有人知道克服這個限制的一種方法,例如,我們可以做些什麼來關閉Office 365端的緩存郵箱會話?還是有一位Office 365管理員可以瞭解確切的限制限制,以及爲什麼他們遠低於內部部署的Exchange限制限制?

其他詳細信息:我們正在使用EWS Java API的修改版本,但已做了一些廣泛的研究,並且非常確定此問題在服務器端。

+0

這可能幫助:https://social.msdn.microsoft.com/Forums/exchange/en-US/1e80db22-145e-434e-9adf-82edbeb8fdfe/exchangeonlineewsmacwindows-errortoomanyobjectsopened-when-fetching-data-from-calendars ?forum = exchangevrdevelopment – Matt

+0

感謝您的回覆,但不幸的是,MSDN社交主題中沒有解決方案(恐怕我們已經看到了全部) – MikeN

回答

1

不幸的是,您不能打電話關閉連接。模擬是推薦的解決方案。你說從安全的角度來看這是一個「不行」,你能否詳細說明一下?

+0

感謝您的回覆。通過委派權限,我們擁有精細的模型,我們可以在某些用戶的「日曆」上給予「作者」權限。所以我們可以限制一組用戶,一組權限和一組對象。由於「作者」權限不授予改變現有事件的權利,因此沒有任何問題可以出現。模仿是'全部或全部' - 如果我們的服務帳戶具有模擬權限,則它可以執行所有操作(例如,,閱讀/刪除/發送郵件,垃圾郵件用戶日曆),我們處理的組織的安全官員對此並不感到滿意。 – MikeN