3

是否可以将段附加到 MS Graph 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")

但是我需要一种方法来提供完整的 Graph Url,例如:

graphClient.MakeRequest(url).GetAsync()

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

编辑 - 解决方案

似乎您必须使用 Microsoft.Graph 命名空间下可用的 RequestBuilders,直到找到与您的请求类型匹配的请求生成器,所有其他请求都返回 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();
4

1 回答 1

2

Perharps,您可以尝试这样的事情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();

于 2019-11-01T08:00:04.223 回答