如何通过Microsoft Graph SDK(C#)获取指定RoomList中的所有会议室?
解决方案
一、正确的SDK调用方式
在Microsoft Graph .NET SDK v5中,要获取指定RoomList下的会议室,需在GraphRoomList之后调用Rooms.GetAsync()——你之前直接调用GraphRoomList.GetAsync()仅会获取RoomList自身信息,不会加载关联的会议室列表。
示例代码:
// 假设roomList是已获取的RoomList对象 var rooms = await graphServiceClient.Places[roomList.EmailAddress] .GraphRoomList .Rooms .GetAsync();
该调用会自动生成你需要的正确请求路径:https://graph.microsoft.com/v1.0/places('roomEmailAddress')/microsoft.graph.roomList/rooms。
二、替代方案:自定义请求路径
如果SDK链式调用仍有异常,可以直接构造请求路径发送请求,绕过SDK自动路由:
using Microsoft.Graph.Models; // 构造目标请求路径 var requestPath = $"places/{roomList.EmailAddress}/microsoft.graph.roomList/rooms"; // 发送GET请求并解析为Room集合 var response = await graphServiceClient .Request(requestPath) .GetAsync<RoomCollectionResponse>(); var rooms = response.Value;
三、问题原因说明
你之前的调用返回空rooms属性的核心原因:
- 该请求仅获取RoomList资源本身,默认不会自动展开关联的
rooms导航属性 - 实际请求路径指向RoomList资源,而非其下的会议室列表
另外,若后续要订阅会议室新增会议通知,可基于获取到的会议室邮箱,创建针对/users/{roomEmail}/events的变更订阅,监听新增事件。
内容的提问来源于stack exchange,提问作者david sery
相关产品推荐
相关产品推荐

