C# Microsoft.Graph 5.69 Ошибки (memberOf не существует) при вызове .Users[objectId].MemberOf.GetAsync()C#

Место общения программистов C#
Ответить
Anonymous
 C# Microsoft.Graph 5.69 Ошибки (memberOf не существует) при вызове .Users[objectId].MemberOf.GetAsync()

Сообщение Anonymous »

Я столкнулся с проблемой на нашем сайте: мы получаем ошибку 500 от API Microsoft Graph при использовании пакета Microsoft.Graph версии 5.69.0 Nuget. (https://www.nuget.org/packages/Microsof ... c=template). Вызов пытается получить членство пользователя. Я делаю запрос в каталог Azure B2C.
Здесь возникает следующая ошибка:

Код: Выделить всё

Microsoft.Graph.Models.ODataErrors.ODataError: Resource 'memberOf' does not exist or one of its queried reference-property objects are not present.
at Microsoft.Kiota.Http.HttpClientLibrary.HttpClientRequestAdapter.ThrowIfFailedResponseAsync(HttpResponseMessage response, Dictionary`2 errorMapping, Activity activityForAttributes, CancellationToken cancellationToken)
at Microsoft.Kiota.Http.HttpClientLibrary.HttpClientRequestAdapter.SendAsync[ModelType](RequestInformation requestInfo, ParsableFactory`1 factory, Dictionary`2 errorMapping, CancellationToken cancellationToken)
at Microsoft.Kiota.Http.HttpClientLibrary.HttpClientRequestAdapter.SendAsync[ModelType](RequestInformation requestInfo, ParsableFactory`1 factory, Dictionary`2 errorMapping, CancellationToken cancellationToken)
at Microsoft.Graph.Users.Item.MemberOf.MemberOfRequestBuilder.GetAsync(Action`1 requestConfiguration, CancellationToken cancellationToken)
at profile.usafa.org.Controllers.APIController.AzureGroups(String objectId)
at lambda_method189(Closure , Object )
at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|25_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Rethrow(ResourceExecutedContextSealed context)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)
at Microsoft.AspNetCore.Routing.EndpointMiddleware.g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger)
at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
at profile.usafa.org.Startup.ProtectStaticFilesMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Session.SessionMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Session.SessionMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
Вот код, который я использую для звонка:

Код: Выделить всё

var graphClient = new GraphServiceClient(clientSecretCredential);

var tempresult = await graphClient.Users[objectId].GetAsync();

DirectoryObjectCollectionResponse result = null;

result = await graphClient.Users[objectId].MemberOf
.GetAsync().;
Вы заметите, что tempresult — это всего лишь тестовый вызов, чтобы убедиться, что я могу вернуть пользователя, не мешая члену, и что этот вызов успешен.
Проверил это с помощью AI, и он дал мне следующее:
  • Проверить разрешения: убедитесь, что ваше приложение имеет необходимые разрешения для чтения. свойствоmemberOf. Вам потребуются разрешения User.Read.All или Directory.Read.All при регистрации приложения Azure AD. Оба разрешения установлены правильно
  • Используйте правильную конечную точку API. Убедитесь, что вы используете правильную конечную точку API. СвойствоmemberOf должно быть доступно через конечную точку /users/{id}/memberOf. Вызов абстрагирован, и я не уверен, как это проверить
  • Обработка пустых результатов: убедитесь, что вы обрабатываете случаи, когда пользователь может не быть членом любые группы. Ошибка возникает во время вызова, а не после возврата результатов.
Я также пробовал использовать Graph Explorer. Однако я не могу протестировать его в своем каталоге B2C, поскольку он не является основным каталогом, и мне не удалось найти способ переключения каталогов, который работал. Мне удалось зарегистрировать пользователя MemberOf в нашем основном каталоге.
Последнее примечание: до этой недели это работало (не знаю, когда это сломалось), но мы не внесли никаких изменений в кодовую базу на этой неделе. Изначально я использовал версию Microsoft.graph 4, когда начал получать эту ошибку, но перешел на последнюю версию, чтобы попытаться решить проблему. В обеих версиях произошла одна и та же ошибка.
Спасибо за любые полезные мысли, которые вы можете высказать.

Подробнее здесь: https://stackoverflow.com/questions/793 ... l-usersobj
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»