首页 文章

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

提问于
浏览
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)

或者有时抛出:

请求失败 . 底层连接已关闭:接收时发生意外错误 . 在Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest1.Execute()的Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndEmitRequest(IEwsHttpWebRequest&request)的Microsoft.Exchange.WebServices.Data.ServiceRequestBase.GetEwsHttpWebResponse(IEwsHttpWebRequest请求)中的Stack Strace :: at在Microsoft.Exchange.WebServices.Data.ExchangeService.InternalCreateItems(IEnumerable1 items,FolderId parentFolderId,Nullable1 messageDisposition,Nullable1 sendInvitationsMode,ServiceErrorHandling errorHandling)在Microsoft.Exchange.WebServices.Data.Item.InternalCreate(FolderId parentFolderId,Nullable1 messageDisposition,Nullable1 sendInvitationsMode)在Microsoft.Exchange.WebServices.Data.Item.Save(FolderId parentFolderId)在Office365EWSWriter.Office365Engine.SaveMail(EmailMessage p_objEWSMailItem,FolderId p_objFoderID)

请建议解决方案 .

1 回答

  • 0

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

相关问题