【问题标题】:EWS - Find last calendar modifications in Exchange Web Services 2007EWS - 在 Exchange Web Services 2007 中查找最后的日历修改
【发布时间】:2012-05-09 13:08:46
【问题描述】:

我是 EWS Web 服务的新用户,可以处理不同的功能以使其正常工作(FindItem、FindFolder、getItem 等...) 但我无法解决这个问题: 我尝试在日历文件夹中查找所有最新的修改或约会创建。 我的第一个想法是创建一个限制 LastModificationDate 扩展字段(PropertyId = 0x3008)的 FindItemType 请求并调用 findItem 方法。

我尝试了以下代码,但结果始终为空( aorit.Items == null):

_esb = new ExchangeServiceBinding();
_esb.Url = serviceUrl;
_esb.Credentials = new NetworkCredential
{                
    UserName = userName,
    Password = password,
    Domain = domain
};

// snipped...

FindItemType fit = new FindItemType
{
    ItemShape = new ItemResponseShapeType
    {
        BaseShape = DefaultShapeNamesType.IdOnly
    },
    ParentFolderIds = folderTypes,
    Traversal = ItemQueryTraversalType.Shallow,
    Restriction = new RestrictionType
    {
        Item = new IsGreaterThanOrEqualToType
        {
            FieldURIOrConstant = new FieldURIOrConstantType
            {
                Item = new ConstantValueType { Value = lastModifiedDateSearched.ToUniversalTime().ToString("u") }
            },
            Item = new PathToExtendedFieldType
            {
                DistinguishedPropertySetIdSpecified = true,
                DistinguishedPropertySetId = DistinguishedPropertySetType.Appointment,
                PropertyType = MapiPropertyTypeType.SystemTime,
                PropertyId = 0x3008,
                PropertyIdSpecified = true,
            }
        }
    }
};

FindItemResponseType response = _esb.FindItem(fit);

List<ItemIdType> res = new List<ItemIdType>();
foreach (FindItemResponseMessageType firmt in     response.ResponseMessages.Items.Where(c => c.IsNotNull()))
{
    if (firmt.RootFolder.IsNotNull())
    {
        ArrayOfRealItemsType aorit = firmt.RootFolder.Item as ArrayOfRealItemsType;
        if (aorit != null && aorit.Items.IsNotNull())
        {
            foreach (ItemType item in aorit.Items)
            {
                if (item.ItemId.IsNotNull())
                {
                    res.Add(item.ItemId);
                }
            }
        }
    }
}

有人知道我的查询是否正确吗?我是否使用正确的方法来做到这一点? 感谢您的帮助。

【问题讨论】:

    标签: c# asp.net exchange-server exchangewebservices


    【解决方案1】:

    挖了又挖,然后……终于找到了问题所在。 PathToExtendedFieldType 未正确声明。应该很简单:

    new PathToExtendedFieldType
    {
        PropertyType = MapiPropertyTypeType.SystemTime,
        PropertyTag = "0x3008"
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-01
      • 1970-01-01
      • 2012-12-18
      • 2012-01-14
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多