Microsoft.Exchange.WebServices:无法将数据写入传输连接:远程主机强制关闭现有连接

时间:2016-12-14 07:16:43

标签: c# web-services exchangewebservices microsoft-exchange

我正在尝试使用Microsoft.Exchange.WebServices.dll(EWS Apis)在Office 365上保存电子邮件

     EmailMessage f_ObjEWSMail  = new EmailMessage(objExchangeService);
     f_ObjEWSMail.Save(p_objFoderID); // Throwing error here

随机抛出异常:

  

无法从传输连接读取数据:远程主机强行关闭现有连接。

     

在System.Net.Security._SslStream.EndRead(IAsyncResult asyncResult)

     

在System.Net.TlsStream.EndRead(IAsyncResult asyncResult)

     

在System.Net.PooledStream.EndRead(IAsyncResult asyncResult)

     

在System.Net.Connection.ReadCallback(IAsyncResult asyncResult)

或有时抛出:

  

请求失败。基础连接已关闭:接收时发生意外错误。

     

Stack Strace :: at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(IEwsHttpWebRequest request)      在Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndEmitRequest(IEwsHttpWebRequest& request)      在Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest 1.Execute() at Microsoft.Exchange.WebServices.Data.ExchangeService.InternalCreateItems(IEnumerable 1项,FolderId parentFolderId,Nullable 1 messageDisposition, Nullable 1 sendInvitationsMode,ServiceErrorHandling errorHandling)      在Microsoft.Exchange.WebServices.Data.Item.InternalCreate(FolderId parentFolderId,Nullable 1 messageDisposition, Nullable 1 sendInvitationsMode)      在Microsoft.Exchange.WebServices.Data.Item.Save(FolderId parentFolderId)      在Office365EWSWriter.Office365Engine.SaveMail(EmailMessage p_objEWSMailItem,FolderId p_objFoderID)

请建议解决方案。

1 个答案:

答案 0 :(得分:0)

这些错误是由于底层传输连接问题(例如您与云的网络连接)造成的,因为您处理云无法保证100%的网络(例如,与您刚刚连接到网络的Onprem相比)服务器通过交换机)。在这个例子中你所能做的就是捕获错误并重试。 EWS Managed API使用HttpWebRequest发送和接收SOAP数据包,因此这些错误是由客户端的这个类生成的(如果你想进一步追逐那些错误,那么我建议在Stackoverflow上搜索那个类的那些错误)。如果您尝试使用来自基于云的虚拟机(或服务)(如AWS或Azure)的代码,您应该会发现这些错误的实例要低得多,因为底层网络连接更加可靠。