EWS SyncFolderItems给我异常“发生内部服务器错误。操作失败。”

时间:2017-05-25 15:58:34

标签: exchangewebservices

我有一个同步工具,它使用EWS托管API'SyncFolderItems'来检索日历文件夹中的已更改项目。它已经运行了18个月左右,但本周两个客户都遇到了同样的问题。 (可能是巧合)。两者都是Office 365客户。

同步开始未能完成,并且在进一步分析时,SyncFolderItems调用失败并显示错误“发生内部服务器错误。操作失败。”错误中没有进一步的详细信息。

我重置同步(即将syncstate设置为null,以便再次同步文件夹中的所有内容)。它适用于几次分页迭代,一次获得250个项目,但它们在某些时候失败了。

我想也许有一个项目有很多数据。我将页面大小减小到25,它可以正常工作,然后失败了。我将页面大小减小为1并且失败了。文件夹中有1250个项目,所以我还没有找出它失败的项目。这似乎不一致,我想知道最近是否有一个更高的油门?

我认为我的下一步是查看是否有一个违规项目并将其删除,但是它可能会解决它可能是哪个项目。

有没有人对可能出现的问题有任何建议?

  icc = service.SyncFolderItems(Connection.SourceID, ps, null, 1,                                                              
                      SyncFolderItemsScope.NormalItems, syncstate);

1 个答案:

答案 0 :(得分:2)

我对SyncFolderItems(..)有同样的问题。

问题似乎只存在于公共文件夹中?我测试了一个公共日历文件夹。如果我第一次调用SyncFolderItems没有状态,我没有错误。但是,如果我有状态并删除公用文件夹中的一个项目,则在下次调用SyncFolderItems()时会出现此错误。

        ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2016, TimeZoneInfo.Local);
        service.Url = new Uri("https://outlook.office365.com/EWS/Exchange.asmx");
        service.Credentials = new WebCredentials("x.y@germany.de", "pwd");

        Folder f1 = Folder.Bind(service, new FolderId("SOMEFOLDERID OF A PUBLIC CALENDAR FOLDER"), BasePropertySet.FirstClassProperties);
        Console.WriteLine(f1.DisplayName);
        String status = "";
        do
        {

            ChangeCollection<ItemChange> changes = service.SyncFolderItems(f1.Id, BasePropertySet.IdOnly, null, 100, SyncFolderItemsScope.NormalItems, status);

            Console.Write(changes.Count+",");

            status = changes.SyncState;

        } while (true);

ServerInfo:{15.01.1101.019} V2017_04_14