Не удалось найти элемент '@ odata.type' в объекте типа 'Team' - PullRequest
0 голосов
/ 30 октября 2019

У меня проблемы с добавлением команды в группу, ранее созданную с помощью Microsoft Graph.

Я использую клиентскую библиотеку Microsoft Graph .NET (1.19.0) для работы сMicrosoft Graph, следуя учебнику по .NET Core здесь .

Аутентификация выполняется с помощью потока клиента (консоль работает как демон), и у меня нет проблем с построением graphClient или аутентификацией:

// Auth info
var tenantId = "xxx";
var clientId = "xxx";
var clientSecret = "xxx";
var scopes = new List<string> { "https://graph.microsoft.com/.default" };

// Create ConfidentialClientApplication
var confidentialClientApplication = ConfidentialClientApplicationBuilder.Create(clientId)
    .WithAuthority(AzureCloudInstance.AzurePublic, tenantId)
    .WithClientSecret(clientSecret)
    .Build();

// Create authenticationProvider
ClientCredentialProvider authenticationProvider = new ClientCredentialProvider(confidentialClientApplication, scopes[0]);

// Create graph client
// Use graph BETA endpoint
var baseUrl = "https://graph.microsoft.com/beta/";
var graphServiceClient = new GraphServiceClient(baseUrl, authenticationProvider);

Или создание группы:

var groupName = "Team group";
var groupDescription = "Awesome group";
var group = new Group
{
    DisplayName = groupName,
    Description = groupDescription,
    GroupTypes = new List<string> { "Unified" },
    Visibility = "Private",
    MailNickname = groupName.Replace("", string.Empty).ToLower(),
    MailEnabled = false,
    SecurityEnabled = false
};
// Send the POST request to create group 
group = await graphServiceClient.Groups.Request().AddAsync(group);

Но при добавлении команды в новую группу:

var team = new Team();
await graphServiceClient
    .Groups[group.Id]
    .Team
    .Request()
    .PutAsync(team);

Я получаю следующую ошибку:

Code: InvalidRequest
Message: Could not find member '@odata.type' on object of type 'Team'. Path '['@odata.type']', line 1, position 15.
Inner error:
AdditionalData:
request-id: xxx
date: 2019-10-30 09:12:04
ClientRequestId: xxx

Но при сериализации команды-модели в JSON результат будет:

{"@odata.type":"microsoft.graph.team"}

Что предполагает наличие члена OData с типом Team.

Я попытался добавить оба пакета NuGet Microsoft.AspNet.OData и Microsoft.Data.OData согласно этому предложению здесь: Не удалось найти элемент '@ odata.type' в объекте типа 'TeamMemberSettings' , но это не так

Я также пытался вызвать конечную точку напрямую с HttpRequest, которыйдал тот же результат. Я также пытался использовать один и тот же код в приложениях .NET Core и .Net Framework.

1 Ответ

1 голос
/ 30 октября 2019

Хотя вы можете переписать Microsoft Graph SDK в бета-версию, он все равно будет использовать только модели данных v1.0. Чтобы использовать Microsoft Graph Beta, вам следует использовать Microsoft Graph Beta SDK .

Install-Package Microsoft.Graph.Beta -Version 0.8.0-preview

. Вы также используете устаревшую конечную точку, которая будет удалена до конца года. ,Из документации :

Этот API находится в процессе устаревания в пользу Создать команду и будет удален к концу 2019 года. Подробнее о том, как создать команду из группы, см. Примеры 4 и 5 в Создание команды .

Чтобы создать команду из группы ,вы выдаете POST следующим образом:

await graphServiceClient
    .Groups[group.Id]
    .Team
    .Request()
    .PostAsync(team);

Кроме того, имейте в виду, что это примечание из документации :

Если группа была созданаМенее 15 минут назад из-за задержек при репликации возможен сбой вызова команды «Создать» с кодом ошибки 404. Мы рекомендуем повторить попытку создания группового вызова три раза с 10-секундной задержкой между вызовами.

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