EWS 连接被远程主机强行关闭
Posted
技术标签:
【中文标题】EWS 连接被远程主机强行关闭【英文标题】:EWS connection forcibly closed by remote host 【发布时间】:2018-08-03 14:23:07 【问题描述】:我正在使用 EWS 从收件箱中获取附件。但有时我会收到错误消息。
[SocketException (0x2746): 现有连接被远程主机强行关闭]
我假设这是在交换方面进行的某种节流。所以我的问题是。如何更改我的代码以正确处理此类错误。
string UserName = Properties.Settings.Default.UserName;
string Password = Properties.Settings.Default.Password;
string InboxEmail = Properties.Settings.Default.InboxEmail;
string SavePath = Properties.Settings.Default.SavePath;
int ItemViewCount = Properties.Settings.Default.ItemViewCount;
bool moreItems = true;
ItemId anchorId = null;
ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013_SP1);
service.Credentials = new NetworkCredential(UserName, Password);
service.Url = new Uri("https://myexchangeserver/EWS/Exchange.asmx");
ServicePointManager.ServerCertificateValidationCallback = delegate return true; ;
FolderId SharedMailbox = new FolderId(WellKnownFolderName.Inbox, InboxEmail);
ItemView itemView = new ItemView(ItemViewCount + 1
, 0);
itemView.OrderBy.Add(ItemSchema.DateTimeReceived, SortDirection.Descending);
SearchFilter searchFilter = new SearchFilter.SearchFilterCollection(LogicalOperator.And, new SearchFilter.IsEqualTo(EmailMessageSchema.IsRead, false));
FindItemsResults<Item> findResults;
// we need to loop through the pages
while (moreItems)
findResults = service.FindItems(SharedMailbox, searchFilter, itemView);
anchorId = findResults.Items.First<Item>().Id;
// do stuff here
// see if more is available over the limit of 1k
moreItems = findResults.MoreAvailable;
if (moreItems)
itemView.Offset += ItemViewCount;
// Set the flag to discontinue paging.
if (!findResults.MoreAvailable)
moreItems = false;
【问题讨论】:
捕获异常将是一个开始。SocketException
抛出的代码在哪里?
似乎与 Ews 的节流无关:social.msdn.microsoft.com/Forums/en-US/…
这是个好问题。不幸的是我不确定。我将代码包含在 try catch 中。但它什么也没抓住。它只返回一般错误,并没有说明错误发生在哪一行。而且它也是间歇性发生的。
正如链接所示,它可能与防火墙或 AV 有关。您的 AV 服务器端是否有某种形式的主动威胁防护?
域防火墙已关闭。服务器在同一个机架中。我得检查一下是否有杀毒软件造成了破坏。
【参考方案1】:
我有同样的问题。我在想这是防火墙或节流的问题。我终于找到了一个奇怪的解决方法。当 Exchange Web 服务 (EWS) 的 FindItems
不断抛出异常时,我打开浏览器并登录网络上的帐户(即 outlook.office365.com
)。这可以解决大约 1 小时或更长时间的问题。
这不仅是 EWS 问题,也是 Outlook 无法连接到 Exchange 服务器时的问题。 OWA 登录也解决了这个问题。
【讨论】:
以上是关于EWS 连接被远程主机强行关闭的主要内容,如果未能解决你的问题,请参考以下文章
访问 Photobucket API 时“现有连接被远程主机强行关闭”
System.Net.Sockets.SocketException:'现有连接被远程主机强行关闭'