1

我正在尝试使用 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) at Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndEmitRequest(IEwsHttpWebRequest& request) at Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest 1.Execute() at Microsoft.Exchange.WebServices.Data.ExchangeService.InternalCreateItems(IEnumerable1 个项目,FolderId parentFolderId, Nullable 1 messageDisposition, Nullable1 sendInvitationsMode, ServiceErrorHandling errorHandling) 在 Microsoft.Exchange.WebServices.Data.Item.InternalCreate(FolderId parentFolderId, Nullable 1 messageDisposition, Nullable1 sendInvitationsMode) 在 Microsoft.Exchange.WebServices.Data.Item.Save(FolderId parentFolderId) 在 Office365EWSWriter.Office365Engine。 SaveMail(EmailMessage p_objEWSMailItem, FolderId p_objFoderID)

请提出解决方案。

4

1 回答 1

0

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

于 2016-12-14T23:29:58.420 回答