SharePoint 2010 CSOM - 401 在子网站查询

本文关键字:网站 查询 2010 CSOM SharePoint | 更新日期: 2023-09-27 18:36:48

我正在尝试使用 CSOM 从根站点访问数据,然后遍历其子网站以访问存储在其列表中的文件。 当我去创建 ClientContext 时,它与根 URL 一起工作得很好,但是当我使用其中一个子网站的 URL 时,当我点击 ExecuteQuery() 时,我会得到 401。

using (var clientContext = new ClientContext(rootURL))
        {
            Console.WriteLine("Establishing connection...");
            var userName = System.Configuration.ConfigurationManager.AppSettings["userName"];
            var domain = System.Configuration.ConfigurationManager.AppSettings["domain"];
            var password = System.Configuration.ConfigurationManager.AppSettings["pwd"];
            var credentials = new NetworkCredential(userName, password, domain);
            clientContext.Credentials = credentials;
            _clientContext = clientContext;
            var spContext2 = new SharePointClientDataContext(clientContext);
            ClientContext newContext = new ClientContext(subsiteURL);
            var allLists = newContext.Web.Lists;
            newContext.Load(allLists);
            newContext.ExecuteQuery();
            try
            {
...

代码在 newContext.ExecuteQuery() 失败。 知道为什么我会在子网站级别遇到 401,而不是根级别吗?

还值得注意的是,这确实在本地工作,但我目前正在尝试从我的主机操作系统运行它以访问我的 VM 中的文件。

SharePoint 2010 CSOM - 401 在子网站查询

您没有将凭据设置为新的客户端上下文,这就是您收到 HTTP 错误 401(表示未经授权)的原因。在代码中,应在创建newContext后添加以下行:

 newContext.Credentials = credentials;

在 SharePoint 客户端对象模型中,不同客户端上下文中的对象是完全分离的。