为什么公用文件夹上的TotalCount属性总是返回0项

本文关键字:属性 返回 0项 TotalCount 文件夹 为什么 | 更新日期: 2023-09-27 18:12:46

使用Exchange 2013 SP1和Exchange Web Services管理的API 2.2来尝试获取我存储在公共文件夹中的联系人文件夹中的联系人列表。我想将ItemView的大小限制为我在这个联系人文件夹中的联系人总数,但是当我尝试返回该属性(contactfolder.TotalCount)时,它总是返回0。如果我尝试使用邮箱下的Contact文件夹进行此操作,则返回一个非0的值。我可以通过为ItemView的构造函数指定一个特定的数字或使用int来解决这个问题。MaxValue,但我更愿意使用联系人列表中的项目总数。非常感谢任何帮助!以下是相关代码:

private FindItemsResults<Microsoft.Exchange.WebServices.Data.Item> ExchangeContacts()
    {
        // Setup the exchange server connection.
        ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2013_SP1);
        service.AutodiscoverUrl("someone@mydomain.com");
        // Set the filter to choose the correct contact list
        SearchFilter filter = new SearchFilter.IsEqualTo(FolderSchema.DisplayName, "My Public Contacts");
        SearchFilter.SearchFilterCollection filterCollection = new SearchFilter.SearchFilterCollection();
        filterCollection.Add(filter);           

        // Get the FolderId using the search filter.
        Folder parent = Folder.Bind(service, WellKnownFolderName.PublicFoldersRoot);
        FindFoldersResults results = parent.FindFolders(filter, new FolderView(1));
        FolderId fid = results.Single().Id;
        // Get the Contact folder based on the folderid.
        ContactsFolder contactsfolder = (ContactsFolder)results.Single();            
        ItemView view = new ItemView(contactsfolder.TotalCount);
        // Set the property that need to be shown in the page.
        view.PropertySet = new PropertySet(BasePropertySet.IdOnly, ContactSchema.DisplayName, ContactSchema.CompanyName, ContactSchema.LastModifiedTime, ContactSchema.BusinessAddressCity, ContactSchema.BusinessAddressPostalCode, ContactSchema.BusinessAddressState, ContactSchema.BusinessAddressStreet, ContactSchema.HomeAddressCity, ContactSchema.HomeAddressPostalCode, ContactSchema.HomeAddressState, ContactSchema.HomeAddressStreet, ContactSchema.ItemClass, ContactSchema.FileAs, ContactSchema.LastModifiedName);
        //view.PropertySet = new PropertySet(BasePropertySet.IdOnly, ContactSchema.DisplayName);
        // Order the results by one of the selected properties
        //view.OrderBy.Add(ContactSchema.LastModifiedTime, Microsoft.Exchange.WebServices.Data.SortDirection.Descending);           
        FindItemsResults<Microsoft.Exchange.WebServices.Data.Item> contactItems = contactsfolder.FindItems(view);
        return contactItems;
    } 

为什么公用文件夹上的TotalCount属性总是返回0项

我重新创建了公用文件夹(立即在公用文件夹根目录下),向其中添加了联系人,并运行代码并获得了contactItems。TotalCount值为1(如预期)。然而,在与Exchange产品团队讨论了这个问题之后,我了解到如果FindFolder请求被路由到没有公共文件夹内容的公共文件夹邮箱,FindFolder可能会返回一个不正确的值。因此TotalCount可能返回一个不正确的值,并且不支持公共文件夹。我们将更新文档以反映此问题。

FindFolder操作(Exchange 2013):

使用BaseShape的默认值,响应返回文件夹名,文件夹ID,子文件夹数,子文件夹数在文件夹中找到的子文件夹,以及未读项目的计数。

& lt;……在

FindFolder使用AllProperties响应响应来响应请求shape将不会返回TotalCount和UnreadCount元素公用文件夹搜索。

我猜你需要在搜索条件中指定一个属性过滤器