Microsoft Graph Beta - User Update - запрос в настоящее время не поддерживается для целевого набора сущностей

Я получаю следующую ошибку, когда Обновление пользователя с помощью Бета-версия Microsoft Graph. Разрешения не должны быть проблемой, поскольку я использую следующие разрешения: user.readwrite.all, directory.readwrite.all. Кроме того, HireDate относится к типу DateTimeOffSet, который я получаю от преобразование локальных DateTime в DateTimeOffSet. Так что это тоже не должно быть проблемой. Вопрос: в чем может быть причина ошибки и как ее исправить?

Ошибка:

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);
}

person nam    schedule 31.08.2020    source источник
comment
На данный момент мы можем обновить свойство даты найма (даты найма сотрудника) через Graph API Patch https://graph.microsoft.com/beta/users/userid {"employeeHireDate":"2020-01-02T00:00:00Z"}. См. Эту проблему, которая уже поднималась в Github и UserVoice   -  person Sruthi J    schedule 07.09.2020
comment
@ SruthiJ-MSFTIdentity Благодарим за предоставление соответствующих ссылок. Я проголосовал за UserVoice, так как это важный для меня вопрос.   -  person nam    schedule 07.09.2020


Ответы (2)


Согласно некоторому тесту, я столкнулся с той же проблемой, что и ваша. Я тестирую его в коде с потоком предоставления client_credential и потоком предоставления имени пользователя / пароля (и добавляю достаточно разрешений), но ни один из них не преуспел. Затем я тестирую его в графическом проводнике, но тоже не смог. Кажется, свойство hireDate не может быть обновлено успешно.

В качестве словаря я нашел другое свойство, которое, возможно, вы можете использовать, вы можете использовать employeeHireDate. Я уже тестирую, чтобы обновить это свойство, все работает нормально. Это свойство существует только тогда, когда мы используем api бета-графа, и мы не можем найти его ни в свойства пользователя v1.0 ни в бета-свойства пользователя.

Чтобы обновить 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);

Кстати, вам нужно обратить внимание на свойства в бета-версии, потому что они могут быть изменены в будущем.

================================== Обновление ======== ==========================

введите описание изображения здесь

person Hury Shen    schedule 01.09.2020
comment
не могли бы вы указать на ссылку, в которой employeeHireDate объясняется? Я искал в Интернете, но не получил никакого результата. - person nam; 04.09.2020
comment
Привет, @nam Как я уже упоминал в своем ответе, мы не можем найти свойство employeeHireDate ни в v1.0 свойства пользователя документ ни в бета-свойства пользователя. Он просто существует, когда мы запрашиваем api бета-графика (получение пользователя), и мы можем редактировать его с помощью api бета-графика. - person Hury Shen; 04.09.2020
comment
@nam Я обновляю свой ответ скриншотом для вашей справки. - person Hury Shen; 04.09.2020
comment
Похоже, что employeeHireDate был выпущен в октябре 2020 года: docs.microsoft.com/en-us/graph/ - person savbace; 14.11.2020

На данный момент мы можем обновить свойство даты найма (даты найма сотрудника) через Graph API.

Патч https://graph.microsoft.com/beta/users/userid

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

Обратитесь к этой проблеме, которая уже поднималась в Github и UserVoice

person Sruthi J    schedule 08.09.2020