我們使用針對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-AnchorMailbox
和X-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的修改版本,但已做了一些廣泛的研究,並且非常確定此問題在服務器端。
這可能幫助:https://social.msdn.microsoft.com/Forums/exchange/en-US/1e80db22-145e-434e-9adf-82edbeb8fdfe/exchangeonlineewsmacwindows-errortoomanyobjectsopened-when-fetching-data-from-calendars ?forum = exchangevrdevelopment – Matt
感謝您的回覆,但不幸的是,MSDN社交主題中沒有解決方案(恐怕我們已經看到了全部) – MikeN