【问题标题】:Microsoft.Exchange.WebServices : Unable to write data to the transport connection: An existing connection was forcibly closed by the remote hostMicrosoft.Exchange.WebServices:无法将数据写入传输连接:现有连接被远程主机强行关闭
【发布时间】:2017-04-29 10:40:40
【问题描述】:

我正在尝试使用 Microsoft.Exchange.WebServices.dll (EWS API) 在 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 请求) 在 Microsoft.Exchange.WebServices.Data.ServiceRequestBase.ValidateAndEmitRequest(IEwsHttpWebRequest& 请求) 在 Microsoft.Exchange.WebServices.Data.MultiResponseServiceRequest1.Execute() at Microsoft.Exchange.WebServices.Data.ExchangeService.InternalCreateItems(IEnumerable1 项,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)

请提出解决方案。

【问题讨论】:

  • 嗨 Renuka,上面代码中的MailMessageObj 是什么?并且您正在从哪个邮件帐户获取邮件消息?
  • 对不起.. 它的 f_ObjEWSMail ..
  • 如果您添加一些关于您正在使用的代码的更多信息,那就太好了。
  • 我只想使用 Microsoft.Exchange.WebServices.dll 将该特定邮件 (f_ObjEWSMail) 添加到 Office 365 邮箱的特定文件夹(FolderId 称为 p_objFoderID)。
  • 我正在使用多线程一次上传 2 封邮件。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2011-04-08
    • 1970-01-01
    • 2011-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多