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

C#查询SharePoint列表时出现连接关闭异常求助

SharePoint Online C# 查询列表时连接关闭异常排查方向

执行到clientContext.ExecuteQuery()时抛出异常,异常信息翻译为:基础连接已关闭: 发送时发生意外错误。

排查方向:

  • 强制启用TLS 1.2:SharePoint Online仅支持TLS 1.2及以上版本,旧版.NET框架默认未启用。在初始化ClientContext前添加以下代码:
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
    
  • 排查网络与代理:检查网络是否有防火墙/代理拦截SharePoint请求,可尝试在无代理环境测试;若需代理,给ClientContext配置代理:
    clientContext.Proxy = new WebProxy("代理地址", 端口);
    
  • 验证站点URL与权限:
    • 确认SiteUrl是完整有效站点地址(如https://xxx.sharepoint.com/sites/目标站点),避免域名或路径错误。
    • 手动登录SharePoint验证TenantLogin账号是否有目标站点及列表的读取权限。
  • 更新CSOM包版本:确保Microsoft.SharePointOnline.CSOM NuGet包为最新稳定版,旧版本可能存在兼容性问题。
  • 校验SecureString构造逻辑:临时用明文密码构造SecureString测试,确认密码解密后转SecureString的逻辑无错误:
    var passWord = new SecureString();
    foreach (char c in "你的测试明文密码") passWord.AppendChar(c);
    
  • 添加重试机制:网络波动可能导致连接中断,可引入重试逻辑(如Polly)捕获异常后重试请求。

用户提供的代码:

var clientContext = new ClientContext(ConfigurationManager.AppSettings["SiteUrl"]) { RequestTimeout = -1 };
var passWord = new SecureString();
foreach (var c in SecureMgr.GetDecryptedPassword(ConfigurationManager.AppSettings["TenantPwd"]).ToCharArray()) 
    passWord.AppendChar(c);
clientContext.Credentials = new SharePointOnlineCredentials(ConfigurationManager.AppSettings["TenantLogin"], passWord);
var spList = clientContext.Web.Lists.GetByTitle(ConfigurationManager.AppSettings["ListAnnuaireUsers"]);
clientContext.Load(spList);
clientContext.ExecuteQuery();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 21:05:25