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

无需创建Cookie和登录浏览器,用C#下载SharePoint文件

无需浏览器登录的SharePoint文件下载方案(C#控制台应用)

方法1:SharePoint CSOM + App-Only权限

这种方式通过注册SharePoint应用获取权限,全程无需用户交互登录。

前置操作:

  • 登录目标SharePoint站点,访问/_layouts/15/appregnew.aspx页面注册应用,记录生成的客户端ID和客户端密钥。
  • 访问/_layouts/15/appinv.aspx页面,输入客户端ID,提交权限XML授予应用读取文件的权限(示例权限XML:<AppPermissionRequests AllowAppOnlyPolicy="true"><AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web" Right="Read" /></AppPermissionRequests>)。

C#代码示例:

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

class Program
{
    static void Main()
    {
        string siteUrl = "https://yourtenant.sharepoint.com/sites/yoursite";
        string clientId = "你的客户端ID";
        string clientSecret = "你的客户端密钥";

        using (var context = new ClientContext(siteUrl))
        {
            context.AuthenticationMode = ClientAuthenticationMode.Default;
            context.FormDigestHandlingEnabled = false;
            context.Credentials = new SharePointOnlineCredentials(clientId, ConvertToSecureString(clientSecret));

            // 获取目标文件
            var file = context.Web.GetFileByServerRelativeUrl("/sites/yoursite/Shared%20Documents/target-file.pdf");
            context.Load(file);
            context.ExecuteQuery();

            // 保存到本地
            using (var localStream = new FileStream(@"C:\Downloads\target-file.pdf", FileMode.Create))
            {
                file.OpenBinaryStream().Value.CopyTo(localStream);
            }
        }
    }

    private static SecureString ConvertToSecureString(string input)
    {
        var secureString = new SecureString();
        foreach (char c in input)
        {
            secureString.AppendChar(c);
        }
        return secureString;
    }
}

需提前安装NuGet包:Microsoft.SharePointOnline.CSOM


方法2:Microsoft Graph API + 客户端凭据流

通过Azure AD注册应用,使用客户端凭据模式完成无交互认证,调用Graph API下载文件。

前置操作:

  • 登录Azure门户,注册新应用程序,记录客户端ID、客户端密钥和租户ID。
  • 为应用添加应用权限(如Files.Read.All或Sites.Read.All),并获取管理员同意。

C#代码示例:

using Microsoft.Graph;
using Microsoft.Identity.Client;
using System.IO;

class Program
{
    static async Task Main()
    {
        string tenantId = "你的租户ID";
        string clientId = "你的客户端ID";
        string clientSecret = "你的客户端密钥";
        string siteId = "目标站点ID";
        string driveId = "文档库ID";
        string fileId = "目标文件ID";

        var confidentialClient = ConfidentialClientApplicationBuilder
            .Create(clientId)
            .WithTenantId(tenantId)
            .WithClientSecret(clientSecret)
            .Build();

        var authProvider = new ClientCredentialProvider(confidentialClient);
        var graphClient = new GraphServiceClient(authProvider);

        // 下载文件流并保存
        using (var remoteStream = await graphClient.Sites[siteId].Drives[driveId].Items[fileId].Content.Request().GetAsync())
        {
            using (var localStream = new FileStream(@"C:\Downloads\target-file.pdf", FileMode.Create))
            {
                await remoteStream.CopyToAsync(localStream);
            }
        }
    }
}

需提前安装NuGet包:Microsoft.Graph、Microsoft.Identity.Client


方法3:NTLM认证(仅限内部部署SharePoint)

如果是本地SharePoint Farm环境,可直接使用域账号凭据完成NTLM认证:

using Microsoft.SharePoint.Client;
using System.IO;
using System.Net;

class Program
{
    static void Main()
    {
        string siteUrl = "http://local-sharepoint/sites/yoursite";
        string username = "DOMAIN\\your-account";
        string password = "your-password";

        using (var context = new ClientContext(siteUrl))
        {
            context.Credentials = new NetworkCredential(username, password);
            var file = context.Web.GetFileByServerRelativeUrl("/sites/yoursite/Shared Documents/target-file.pdf");
            context.Load(file);
            context.ExecuteQuery();

            using (var localStream = new FileStream(@"C:\Downloads\target-file.pdf", FileMode.Create))
            {
                file.OpenBinaryStream().Value.CopyTo(localStream);
            }
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 03:45:55