Microsoft Graph Beta-用户更新-目标实体集当前不支持该请求

问题描述

使用Updating a user Microsoft Graph Beta时出现以下错误。权限应该不是问题,因为我正在使用以下权限:user.readwrite.alldirectory.readwrite.all。另外,HireDate的类型为DateTimeOffSet,我是通过converting本地DateTimeDateTimeOffSet得到的。因此,这也不是问题。 问题错误的可能原因是什么?如何解决

错误

Microsoft.Graph.ServiceException
  HResult=0x80131500
  Message=Code: BadRequest
Message: The request is currently not supported on the targeted entity set

Inner error:
    AdditionalData:
    date: 2020-08-31T13:59:10
    request-id: 4b62576f-6572-414c-b9ef-07ea9a61c101
ClientRequestId: 4b62576f-6572-414c-b9ef-07ea9a61c101

代码

private async void DataGridUserUpdateButton_Click(object sender,RoutedEventArgs e)
{
  GraphServiceClient graphClient = new GraphServiceClient(authProvider);

  User user = (sender as Button).DataContext as User;

  string id = user.UserPrincipalName;

   var user = new User
   {
     Department = "IT",displayName = "Bob Doe",HireDate = new DateTime(2020,8,31,2,30,0),JobTitle = "IT Manager"
   };

  await graphClient.Users[sId]
            .Request()
            .UpdateAsync(user);
}

解决方法

根据一些测试,我遇到了与您相同的问题。我使用client_credential授予流和用户名/密码授予流(并添加足够的权限)在代码中对其进行了测试,但没有一个成功。然后,我在图形浏览器中对其进行了测试,但也失败了。似乎属性hireDate无法成功更新。

关于一个词,我发现了另一个可以使用的属性,可以使用employeeHireDate。我已经测试过更新此属性,它可以正常工作。当我们使用beta图形api时,此属性才存在,而在v1.0 user propertiesbeta user properties文档中都找不到。

要更新代码中的employeeHireDate,请参考以下代码:

GraphServiceClient graphClient = new GraphServiceClient( authProvider );

var user = new User
{
    AdditionalData = new Dictionary<string,object>()
    {
        {"employeeHireDate","2019-01-01T00:00:00Z"}
    }
};

await graphClient.Users["userId"]
    .Request()
    .UpdateAsync(user);

顺便说一句,您需要注意Beta版中的属性,因为将来可能会更改

================================== 更新 ===== ============================

enter image description here

,

到目前为止,我们可以通过Graph API更新雇用日期(雇员雇用日期)属性

补丁 https://graph.microsoft.com/beta/users/userid

{"employeeHireDate":"2020-01-02T00:00:00Z"}

请参考GithubUserVoice

中已经提出的问题