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

C# Microsoft.Exchange.WebServices:无法将数据写入传输连接:远程主机强制关闭了现有连接,c#,web-services,exchangewebservices,microsoft-exchange,C#,Web Services,Exchangewebservices,Microsoft Exchange,我正在尝试使用Microsoft.Exchange.WebServices.dll(EWS API)在office 365上保存电子邮件 它随机抛出异常: 无法从传输连接读取数据:远程主机强制关闭了现有连接 在System.Net.Security.\u SslStream.EndRead(IAsyncResult asyncResult) 在System.Net.TlsStream.EndRead上(IAsyncResult asyncResult) 在System.Net.PooledStr

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

它随机抛出异常:

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

在System.Net.Security.\u 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.GetNewsHttpWebResponse(IEwsHttpWebRequest请求) 位于Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndItemRequest(IEwsHttpWebRequest&request) 在Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest
1.Execute()中
在Microsoft.Exchange.WebServices.Data.ExchangeService.InternalCreateItems(IEnumerable
1 items,FolderId parentFolderId,Nullable
1 messageDisposition,Nullable
1 SendInvitationMode,ServiceErrorHandling errorHandling) 在Microsoft.Exchange.WebServices.Data.Item.InternalCreate(FolderId parentFolderId,Nullable
1 messageDisposition,Nullable
1 SendInvitationMode) 位于Microsoft.Exchange.WebServices.Data.Item.Save(FolderId parentFolderId) 在Office365EWSWriter.Office365Engine.SaveMail(EmailMessage p_objEWSMailItem,FolderId p_objFoderID)


请建议解决方案。

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

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

你好,Renuka,上面的代码中的
MailMessageObj
是什么?您正在从哪个邮件帐户获取邮件消息?抱歉。。它的f_ObjEWSMail..如果您添加一些关于您正在使用的代码的更多信息,那就太好了。我只想使用Microsoft.Exchange.WebServices.dll将特定邮件(f_ObjEWSMail)添加到office 365邮箱的特定文件夹(FolderId称为p_objFoderID)。我使用多线程一次上载两封邮件。你好,Renuka,上述代码中的
MailMessageObj
是什么?您正在从哪个邮件帐户获取邮件消息?抱歉。。它的f_ObjEWSMail..如果您添加一些关于您正在使用的代码的更多信息,那就太好了。我只想使用Microsoft.Exchange.WebServices.dll将特定邮件(f_ObjEWSMail)添加到office 365邮箱的特定文件夹(FolderId称为p_objFoderID)中。我使用多线程一次上载两封邮件。
     EmailMessage f_ObjEWSMail  = new EmailMessage(objExchangeService);
     f_ObjEWSMail.Save(p_objFoderID); // Throwing error here