使用C#调用Graph API获取租户会议室时出现NotAcceptable错误
调用Microsoft Graph API获取会议室列表时出现NotAcceptable错误
我用C#调用Microsoft Graph API获取租户内所有会议室列表时,遇到了NotAcceptable错误。Graph Service Client配置正常,能成功获取用户列表,但获取会议室时返回UnknownError。我参考微软官方文档实现了代码,以下是相关代码片段、权限配置和错误堆栈:
创建Graph客户端及获取会议室代码
public GraphServiceClient CreateGraphClient() { var scopes = new[] { "https://graph.microsoft.com/.default" }; var options = new TokenCredentialOptions { AuthorityHost = AzureAuthorityHosts.AzurePublicCloud }; var clientSecretCredential = new ClientSecretCredential( tenantId, clientId, clientSecret, options); return new GraphServiceClient(clientSecretCredential, scopes); } public async Task<List<string>> GetRoomsAsync() { var rooms = await graphClient.Places.Request().GetAsync(); var roomsList = new List<string>(); foreach (var room in rooms) { Console.WriteLine(room.DisplayName); roomsList.Add(room.DisplayName); } return roomsList; }
可正常运行的获取用户代码
public async Task<List<string>> GetUsersAsync() { var users = await graphClient.Users.Request().GetAsync(); var user_list = new List<string>(); foreach (var user in users) { user_list.Add(user.DisplayName); } return user_list; }
Azure AD权限配置

错误堆栈信息
An unhandled exception has occurred while executing the request. Status Code: NotAcceptable Microsoft.Graph.ServiceException: Code: UnknownError Inner error: AdditionalData: date: 2022-09-11T12:06:02 request-id: 1d5d8c56-235c-452d-aa2c-9d71cbf2d7a9 client-request-id: 1d5d8c56-235c-452d-aa2c-9d71cbf2d7a9 ClientRequestId: 1d5d8c56-235c-452d-aa2c-9d71cbf2d7a9 at Microsoft.Graph.HttpProvider.SendAsync(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken) at Microsoft.Graph.BaseRequest.SendRequestAsync(Object serializableObject, CancellationToken cancellationToken, HttpCompletionOption completionOption) at Microsoft.Graph.BaseRequest.SendAsync[T](Object serializableObject, CancellationToken cancellationToken, HttpCompletionOption completionOption) at Microsoft.Graph.GraphServicePlacesCollectionRequest.GetAsync(CancellationToken cancellationToken) at PicoWebAPI.Controllers.MeetingsController.Get() in C:\Users\Blue\source\repos\MeetingRoomBooking\PicoWebAPI\Controllers\MeetingsController.cs:line 25 at lambda_method5(Closure , Object ) at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Awaited|12_0(ControllerActionInvoker invoker, ValueTask`1 actionResultValueTask) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>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.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope) at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger) at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context) at Swashbuckle.AspNetCore.SwaggerUI.SwaggerUIMiddleware.Invoke(HttpContext httpContext) at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider) at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
内容的提问来源于stack exchange,提问作者Baxorr
相关产品推荐
相关产品推荐

