我们使用 EWS 托管 API 将我们的 CRM 与 Exchange 服务器同步。只要我使用 EWS Manage API 1.1,一切都很完美。现在我更新到 Api 2.0(Dll 版本:15.0.516.14),如果我从不同的线程绑定到同一个文件夹并且不明白为什么,我会收到 ArgumentException。
这是引发异常的示例代码:
private void TestAsyncFolderGet()
{
try
{
ExchangeService service = this.GetService();
Parallel.For(0, 20, (i) =>
{
Folder fo = Folder.Bind(service, WellKnownFolderName.Inbox);
});
}
catch (Exception ex)
{
this.State = "Failed: " + ex.Message;
}
}
private ExchangeService GetService()
{
ExchangeService result = new ExchangeService(ExchangeVersion.Exchange2010);
result.AutodiscoverUrl("test@foo.com");
return result;
}
我的真实情况是我使用 pullsubscription 获取更改的项目并异步处理更改。在执行此操作时,我将绑定到父文件夹以获取一些信息。
谁能帮我避免异常?
Stacktrace 和异常信息:
System.ArgumentException:已添加具有相同键的项目。
在 System.Collections.Generic.Dictionary 2.Insert(TKey key, TValue value, Boolean add)
at Microsoft.Exchange.WebServices.Data.ExchangeServiceBase.SaveHttpResponseHeaders(WebHeaderCollection headers)
at Microsoft.Exchange.WebServices.Data.SimpleServiceRequestBase.ReadResponse(IEwsHttpWebResponse response)
at Microsoft.Exchange.WebServices.Data.ExchangeService.InternalFindFolders(IEnumerable
1 parentFolderIds,SearchFilter searchFilter,FolderView 视图,ServiceErrorHandling errorHandlingMode)在 Microsoft.Exchange.WebServices.Data.ExchangeService.FindFolders(FolderId parentFolderId,FolderView 视图)