SharePoint 2010 CSOM - 关于子网站查询的 401
SharePoint 2010 CSOM - 401 on subsite query
我正在尝试使用 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?有什么想法吗?
同样值得注意的是,这确实在本地工作,但我目前正在尝试从我的主机 OS 运行它以从我的 VM 访问文件。
您没有将凭据设置为新的客户端上下文,这就是您收到 HTTP 错误 401 的原因,这意味着未经授权。在您的代码中,您应该在创建 newContext
之后添加此行:
newContext.Credentials = credentials;
在 SharePoint 客户端对象模型中,不同客户端上下文中的对象是完全分离的。
我正在尝试使用 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?有什么想法吗?
同样值得注意的是,这确实在本地工作,但我目前正在尝试从我的主机 OS 运行它以从我的 VM 访问文件。
您没有将凭据设置为新的客户端上下文,这就是您收到 HTTP 错误 401 的原因,这意味着未经授权。在您的代码中,您应该在创建 newContext
之后添加此行:
newContext.Credentials = credentials;
在 SharePoint 客户端对象模型中,不同客户端上下文中的对象是完全分离的。