ExchangeService FindItems 随着时间的推移的限制

问题描述 投票:0回答:1

我有一段代码通过 ExchangeService 连接到邮箱,然后每隔 5 秒在收件箱中搜索一次新电子邮件(true)以进行自动处理。这工作得很好,只是每 66 分钟左右一次,在获取新电子邮件时,它会抛出异常:

The request failed. The remote server returned an error: (401) Unauthorized.

这是抛出异常的代码:

while (true)
{
    FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.Inbox, new ItemView(10));
    Thread.Sleep(FrequencyRefresh * 1000);
}

我正在使用

ExchangeVersion.Exchange2013_SP1

实例化 ExchangeService

似乎在通过 FindItems 进行 330 次查询后,服务器不允许这样做。 66 分钟的时间 + 5 秒的频率让我想到了每小时请求数量的限制,但我似乎在文档中找不到任何相关内容,我看到的唯一限制是关于页面搜索的,但是正如你所看到的,我正在使用 ItemView(10) 进行过滤,因此远远超出了 1000 的限制。

失败后2分钟后重新连接并继续工作。

如果有人能指出我正确的方向,我将不胜感激!

谢谢。

c# .net exchangewebservices
1个回答
0
投票

也许尝试将脚本更改为以下内容,可能值得阅读此内容 https://community.spiceworks.com/t/exchange-2016-autodiscover-failure-401-unauthorized-solved/702597/2

while (true)
{
    try
    {
        FindItemsResults<Item> findResults = service.FindItems(WellKnownFolderName.Inbox, new ItemView(10));
    }
    catch (ServiceRequestException ex) when (ex.Message.Contains("401"))
    {
        // Re-authenticate
        service.Credentials = new WebCredentials("username", "password");
    }
    Thread.Sleep(FrequencyRefresh * 1000);
}
© www.soinside.com 2019 - 2024. All rights reserved.