1

私は 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);
                }
            }
        }
    }
}

私のクエリが正しいかどうか誰かが知っていますか? これを行うには正しい方法を使用しますか?ご協力いただきありがとうございます。

4

1 に答える 1

2

掘って掘って、そして… やっと問題が見つかりました。PathToExtendedFieldType が正しく宣言されていませんでした。単純にする必要がありました:

new PathToExtendedFieldType
{
    PropertyType = MapiPropertyTypeType.SystemTime,
    PropertyTag = "0x3008"
}
于 2012-05-10T04:40:57.150 に答える