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

如何用C#控制台程序获取SharePoint Online站点的所有列表与库?

获取SharePoint Online站点所有列表与库的C#控制台实现

准备工作

首先需要安装SharePoint Online CSOM的NuGet包,在Package Manager控制台执行:

Install-Package Microsoft.SharePointOnline.CSOM

完整代码实现

以下是直接可用的控制台程序代码,包含连接认证、获取所有列表/库并输出关键信息的逻辑:

using System;
using System.Security;
using Microsoft.SharePoint.Client;

namespace SPOListRetriever
{
    class Program
    {
        static void Main(string[] args)
        {
            // 配置SPO站点信息
            string siteUrl = "https://yourtenant.sharepoint.com/sites/yourSite";
            string userName = "youruser@yourtenant.onmicrosoft.com";
            string password = "yourpassword";

            // 将密码转换为SecureString
            var securePassword = new SecureString();
            foreach (char c in password)
            {
                securePassword.AppendChar(c);
            }

            // 初始化客户端上下文
            using (var context = new ClientContext(siteUrl))
            {
                // 使用账号密码认证
                context.Credentials = new SharePointOnlineCredentials(userName, securePassword);

                try
                {
                    // 获取当前站点的Web对象
                    Web web = context.Web;
                    // 加载Web下的所有列表集合,指定需要的属性
                    context.Load(web.Lists, 
                        lists => lists.Include(
                            list => list.Title, 
                            list => list.BaseTemplate, 
                            list => list.DefaultViewUrl));

                    // 执行请求
                    context.ExecuteQuery();

                    // 遍历并输出所有列表/库
                    Console.WriteLine("站点下所有列表与库:");
                    Console.WriteLine("----------------------------------------");
                    foreach (List list in web.Lists)
                    {
                        // 通过BaseTemplate区分列表类型
                        string listType = list.BaseTemplate switch
                        {
                            100 => "普通列表",
                            101 => "文档库",
                            102 => "事件列表",
                            103 => "联系人列表",
                            _ => "其他类型列表"
                        };

                        Console.WriteLine($"标题:{list.Title}");
                        Console.WriteLine($"类型:{listType}");
                        Console.WriteLine($"访问URL:{siteUrl}{list.DefaultViewUrl}");
                        Console.WriteLine("----------------------------------------");
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"出错:{ex.Message}");
                }
                
                Console.ReadLine();
            }
        }
    }
}

代码说明

  • 认证逻辑:用SharePointOnlineCredentials完成账号密码认证,密码转成SecureString符合安全规范。
  • 数据加载优化:通过Include()指定需要的列表属性,避免加载冗余数据,提升请求效率。
  • 类型区分:文档库的BaseTemplate值为101,普通列表为100,其他数值对应不同内置列表类型,可按需扩展判断逻辑。
  • 异常处理:捕获请求过程中的异常,快速排查权限、连接类问题。

注意事项

  • 确保使用的账号拥有目标SPO站点的读取权限,否则会返回权限不足错误。
  • 不要硬编码密码,建议通过控制台输入、配置文件或密钥管理服务获取,避免安全风险。
  • 如果租户启用了MFA,需改用应用程序权限认证或支持MFA的认证方式,上述代码仅适用于账号密码认证场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 17:13:24