如何用C#实现SharePoint Online的Send To Connections列表查询方法
需求可行性及实现方案
当然可行!要获取SharePoint Online管理中心里的「Send To Connections」,咱们不需要去爬页面(那样既不稳定也不推荐),直接借助SharePoint的Client Side Object Model(CSOM)或者PnP CSOM就能轻松实现,下面给你具体的实现思路和代码示例:
前提准备
- 先在项目中安装必要的NuGet包:
- 如果用原生CSOM:
Install-Package Microsoft.SharePointOnline.CSOM - 如果用更便捷的PnP CSOM:
Install-Package PnP.Framework
- 如果用原生CSOM:
- 确保运行代码的账号拥有SharePoint管理员或全局管理员权限,因为操作的是Admin中心站点
实现代码示例
下面是基于PnP CSOM的实现(认证方式更灵活):
using PnP.Framework; using System.Collections.Generic; using System.Linq; private List<string> GetSendToConnections() { var sendToConnections = new List<string>(); // 替换成你的租户Admin站点地址 var adminSiteUrl = "https://MYSERVER-admin.sharepoint.com"; // 这里以账号密码认证为例,你也可以用证书、应用权限等方式 using (var ctx = new AuthenticationManager().GetSharePointOnlineAuthenticatedContextTenant(adminSiteUrl, "你的管理员账号", "你的密码")) { try { // 获取Admin站点的官方文件主机(即Send To Connections)集合 var officialFileHosts = ctx.Site.GetOfficialFileHosts(); ctx.Load(officialFileHosts, hosts => hosts.Include(host => host.Name)); ctx.ExecuteQuery(); // 提取所有连接的显示名称 sendToConnections.AddRange(officialFileHosts.Select(host => host.Name)); } catch (System.Exception ex) { // 这里可以根据需求添加异常处理逻辑,比如日志记录 System.Diagnostics.Debug.WriteLine($"获取Send To Connections失败:{ex.Message}"); } } return sendToConnections; }
关键说明
- 站点地址:必须连接到租户的SharePoint Admin站点(格式就是
https://<租户名>-admin.sharepoint.com),普通站点无法访问这些管理级别的资源 - 认证方式:示例用的是账号密码,如果你是生产环境,更推荐用应用权限或者证书认证,避免硬编码账号密码
- 权限要求:操作Admin站点需要管理员级别的权限,普通站点权限无法获取这些连接信息
内容的提问来源于stack exchange,提问作者Djair Nascimento
相关产品推荐
相关产品推荐

