You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Microsoft Graph API C# SDK查询网站集内的网站

使用Microsoft Graph API C# SDK查询网站集下的所有网站

前提准备

  • 安装Microsoft Graph SDK NuGet包:Install-Package Microsoft.Graph(.NET Framework)或dotnet add package Microsoft.Graph(.NET Core/.NET 5+)
  • 确保应用已配置Sites.Read.All权限(根据场景选择委派权限或应用权限,应用权限适合后台服务类场景)

实现步骤

1. 初始化GraphServiceClient

根据身份验证场景初始化客户端,以下是客户端凭据(应用权限)模式的示例:

using Microsoft.Graph;
using Azure.Identity;

var clientId = "你的应用注册ID";
var tenantId = "你的租户ID";
var clientSecret = "你的应用密钥";

var credential = new ClientSecretCredential(tenantId, clientId, clientSecret);
var graphClient = new GraphServiceClient(credential);

2. 查询网站集下的所有子网站

你可以通过已掌握的网站集ID或webURL两种方式发起查询:

方式一:通过网站集ID直接查询
// 替换为目标网站集的ID
var targetSiteCollectionId = "网站集ID";

var allSubSites = new List<Site>();
var sitesPage = await graphClient.Sites[targetSiteCollectionId].Sites.Request().GetAsync();

// 处理分页结果(子站点数量较多时Graph API会分页返回)
allSubSites.AddRange(sitesPage.CurrentPage);
while (sitesPage.NextPageRequest != null)
{
    sitesPage = await sitesPage.NextPageRequest.GetAsync();
    allSubSites.AddRange(sitesPage.CurrentPage);
}

// 遍历输出子站点信息
foreach (var site in allSubSites)
{
    Console.WriteLine($"名称: {site.DisplayName}, ID: {site.Id}, 访问地址: {site.WebUrl}");
}
方式二:通过网站集webURL查询

如果只有webURL,先将其转换为Graph API可识别的站点标识符,再执行查询:

// 替换为目标网站集的webURL
var siteCollectionWebUrl = "网站集的webURL";
var uri = new Uri(siteCollectionWebUrl);
// 构造Graph API支持的站点标识符格式
var siteIdentifier = $"host/{uri.Host},path/{uri.AbsolutePath.TrimStart('/')}";

var allSubSites = new List<Site>();
var sitesPage = await graphClient.Sites[siteIdentifier].Sites.Request().GetAsync();

// 处理分页
allSubSites.AddRange(sitesPage.CurrentPage);
while (sitesPage.NextPageRequest != null)
{
    sitesPage = await sitesPage.NextPageRequest.GetAsync();
    allSubSites.AddRange(sitesPage.CurrentPage);
}

// 输出结果
foreach (var site in allSubSites)
{
    Console.WriteLine($"名称: {site.DisplayName}, ID: {site.Id}, 访问地址: {site.WebUrl}");
}

关键说明

  • 权限适配:若使用委派权限(用户登录场景),需确保当前用户拥有目标网站集的访问权限,且应用已配置对应的委派权限
  • 分页必要性:当网站集下子站点数量超过默认分页阈值时,必须循环处理NextPageRequest才能获取全部数据
  • 站点层级关系:网站集的根站点为顶级Site对象,其下所有子站点均通过/sites/{site-id}/sites端点获取

内容的提问来源于stack exchange,提问作者A X

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 10:42:14