使用 GraphServiceClient 将 Stringsegment 附加到 MS Graph 请求

Append a Stringsegment to a MS Graph Request with GraphServiceClient

是否可以将段附加到 MS GraphServiceClient 请求并获取该资源?

场景: 我想获取一个组的根站点(更具体地说是它的 weburl 属性)

https://graph.microsoft.com/v1.0/groups/{group-id}/sites/root

但无法使用 QueryBuilder 附加 /root 段,并且不允许枚举站点并引发异常

var task = graphClient.Groups[group.Id].Sites.Request().GetAsync() // exception

我可以得到请求的字符串

var url = graphClient.Groups[group.Id].Sites.Request().AppendSegmentToRequestUrl("root")

但是我需要一个可以提供完整图表的方法 Url,例如:

graphClient.MakeRequest(url).GetAsync()

我知道我可以使用 HttpClient Class 但这会引入不同的模式来获取图形资源,我想避免这种情况。

编辑 - 解决方案

似乎您必须使用 Microsoft.Graph 命名空间下可用的 RequestBuilder,直到找到一个与您的请求类型匹配的 RequestBuilder,所有其他 return null。

var requestBuilder = client.Groups["guid-of-group"].Sites;
var url = requestBuilder.AppendSegmentToRequestUrl("root");

GroupRequestBuilder builder = new GroupRequestBuilder(url, client);
var result = await builder.Request().GetAsync();

也许你可以尝试这样的事情并传入 graphServiceClient 并创建 url 到请求生成器的新实例。


// create the url from the builders
var requestBuilder = graphClient.Groups["groupId"].Sites;
var url = request.AppendSegmentToRequestUrl("root");

// we have to create a new builder as the url property cannot be set/modified publicly
GroupSitesCollectionRequestBuilder groupSitesCollectionRequestBuilder = new GroupSitesCollectionRequestBuilder(url, graphClient);

// Make the call
var result = await groupSitesCollectionRequestBuilder.Request().GetAsync();