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
答案 0 :(得分:1)
这里的错误消息不是很有帮助,但是问题是我们不允许POST进入计划者/计划/计划者/存储桶。您应该将请求发送到计划者/存储桶,并在请求正文中包含planid属性。文档中的示例是正确的(顺序提示是可选的):https://docs.microsoft.com/en-us/graph/api/planner-post-buckets?view=graph-rest-1.0