0

我正在尝试更新任务详细信息:

var t = await graphClient.Planner.Tasks[task.Id].Details.Request().GetAsync();

var ETag = t.GetETag();

然而GetETag()回报null

ETag 是 AdditionalData 字典的一部分,因此我可以编写自己的方法来提取它。

例如:

var e = etag = (taskDetails.AdditionalData["@odata.etag"] as JsonElement?)?.GetString();

但是为什么内置方法不起作用?我的代码和微软的测试代码几乎一模一样。

谢谢。

4

1 回答 1

0

请调试并检查此处公开的 GetEtag() 方法。还要验证传递给此方法的实体不为空。

namespace Microsoft.Graph
{
    using System;

    /// <summary>
    /// Helper class to extract @odata.etag property and to specify If-Match headers for requests.
    /// </summary>
    public static class EtagHelper
    {
        /// <summary>
        /// Name of the OData etag property.
        /// </summary>
        public const string ODataEtagPropertyName = "@odata.etag";

        /// <summary>
        /// Returns the etag of an entity.
        /// </summary>
        /// <param name="entity">The entity that contains an etag.</param>
        /// <returns>Etag value if present, null otherwise.</returns>
        public static string GetEtag(this Entity entity)
        {
            if (entity == null)
            {
                throw new ArgumentNullException(nameof(entity));
            }

            entity.AdditionalData.TryGetValue(ODataEtagPropertyName, out object etag);
            return etag as string;
        }
    }
}
于 2021-08-19T18:20:20.173 回答