Microsoft.Graph.GraphServiceClient Bucket Buckets AddAsync возвращает ошибку «Запросы на запись поддерживаются только для содержащихся объектов» - PullRequest
0 голосов
/ 24 января 2019

У меня есть код, который получит или создаст Planner Bucket .

public async Task<PlannerBucket> GetOrCreateBucket(GraphServiceClient graphServiceClient, string planId, string name)
{
    var buckets = await graphServiceClient
        .Planner
        .Plans[planId]
        .Buckets
        .Request()
        .GetAsync();

    var bucket = buckets.SingleOrDefault(b => b.Name.Equals(name));

    if (bucket == null)
    {
        bucket = await graphServiceClient
            .Planner
            .Plans[planId]
            .Buckets
            .Request()
            .AddAsync(new PlannerBucket()
            {
                Name = name
            });
    }

    return bucket;
}

Когда этот код был изначально написан год назад, я вполне уверен, что он работал нормально.

Раньше часто появлялись новые ведра, и они создавались хорошо. С тех пор код создания редко вызывался, и в последнее время, когда он вызывается, он возвращает ошибку:

Microsoft.Graph.ServiceException: код: BadRequest
Сообщение: запросы на запись поддерживаются только для содержащихся объектов

Я не совсем уверен, что означает ошибка.

Что это значит для того, чтобы сущность содержалась?
Почему это не содержится?
Какая сущность это вообще значит?
Означает ли это, что я пытаюсь создать Ведро?
Означает ли это план, в котором я пытаюсь его создать?

Ответ на эти вопросы был бы хорош, поскольку они помогли бы мне понять, как решить проблему, но в конце дня реальный вопрос: «Что я делаю неправильно и как я могу это исправить? ?».

Вот HTTP-запрос:

POST https://graph.microsoft.com/v1.0/planner/plans/__PLANID__/buckets HTTP/1.1
Cache-Control: no-store, no-cache
Connection: Keep-Alive
Content-Type: application/json
Authorization: Bearer __TOKEN__
SdkVersion: Graph-dotnet-1.7.0
x-ms-request-root-id: 309b7fa3-4c57a2db0536dddc
x-ms-request-id: |309b7fa3-4c57a2db0536dddc.2.
Request-Id: |309b7fa3-4c57a2db0536dddc.2.1.
Content-Length: 30
Host: graph.microsoft.com

{"name":"__BUCKETNAME__"}

А вот и ответ:

HTTP/1.1 400 Bad Request
Cache-Control: private
Transfer-Encoding: chunked
Content-Type: application/json
request-id: 5186e2aa-7a1c-4f86-88c4-5542ef89e6c9
client-request-id: 5186e2aa-7a1c-4f86-88c4-5542ef89e6c9
x-ms-ags-diagnostic: __DIAGNOSTICINFO__
Duration: 2.7551
Strict-Transport-Security: max-age=31536000
Date: Thu, 24 Jan 2019 13:08:52 GMT

fb
{
  "error": {
    "code": "BadRequest",
    "message": "Write requests are only supported on contained entities",
    "innerError": {
      "request-id": "5186e2aa-7a1c-4f86-88c4-5542ef89e6c9",
      "date": "2019-01-24T13:08:53"
    }
  }
}
0

Обыскав немного, я думаю, что эта проблема уже сообщалась на github, но в настоящее время все еще не решена: https://github.com/microsoftgraph/msgraph-sdk-dotnet/issues/307

1 Ответ

0 голосов
/ 25 января 2019

Сообщение об ошибке здесь не очень полезно, но проблема в том, что мы не разрешаем POST планировщику / планам / планам / корзинам.Вы должны посылать запрос планировщику / ведру и включать свойство planid в тело запроса.Пример в документации точный (подсказка заказа необязательна): https://docs.microsoft.com/en-us/graph/api/planner-post-buckets?view=graph-rest-1.0

...