通过MS Graph API更新用户的技能属性失败。

问题描述 投票:0回答:2

我试图更新一个用户的 "技能 "属性(注意:不是使用Me端点)。这将返回一个异常。我使用的是.NET SDK GraphServiceClient 使用最新的3.6.0版本来进行。

要重现

重现该行为的步骤,请使用以下示例代码。

var user = new User()
{
  Skills = skills
};
await graphClient.Users[userId].Request().UpdateAsync(user);

预期行为

我希望这段代码能向Graph API端点发送一个POST请求,该请求应该更新给定使用的Skills属性,前提是经过验证的服务已经被授予了 User.ReadWrite.All 权限(它拥有该权限)。

相反,Graph 端点正在返回以下错误。

  "error": {
    "code": "-1, Microsoft.SharePoint.Client.InvalidClientQueryException",
    "message": "A type named 'Microsoft.SharePoint.user' could not be resolved by the model. When a model is available, each type name must resolve to a valid type.",
    "innerError": {
      "request-id": "1948a4ec-60fd-4212-873f-3d34f62f5601",
      "date": "2020-05-25T09:35:33"
    }
  }
}

不知道为什么这将无法工作。我按照示例进行了操作,虽然这些示例没有特别提到要更新 Skills 属性,你会期望它对所有属性都同样有效。当我从更新的 User 对象,我在返回时没有得到一个错误(但显然在这种情况下没有任何更新)。

azure-active-directory microsoft-graph
2个回答
0
投票

在baywet提到的v1版修复之前,你也可以使用下面的方法来解决你的情况。

图形客户端默认将odata.type添加为microsoft.graph.user,而sharepoint并不期望该值。你可以将odataType改为"https:/graph.microsoft.comv1.0。$metadata#users$entity "或 "Microsoft.SharePoint.user "或null,这样Sharepoint就可以理解该类型。

您可以通过以下方式设置oDatatype

var user = new User()
{
  Skills = skills
};
user.ODataType = "https://graph.microsoft.com/v1.0/$metadata#users/$entity";
await graphClient.Users[userId].Request().UpdateAsync(user);

0
投票

这是一个持续存在的问题,正在服务中解决。测试版应该已经修复,v1版正在进行中。

作为一个变通方法,你可以使用测试版,或者手动制作没有odata类型的请求。

© www.soinside.com 2019 - 2024. All rights reserved.