当我尝试连接时,Sharepoint ClientContext始终返回代码401

时间:2017-06-07 18:32:21

标签: c# sharepoint sharepoint-2013 sharepoint-clientobject

我尝试使用ClientContext(Microsoft.SharePoint.Client lib)连接到Sharepoint。

不幸的是,当我执行应该在Sharepoint网站上连接的代码时,我收到了401错误。

当我尝试使用网络浏览器进行连接时,它可以正常工作。

我的代码来了:

        using (ClientContext clientcontext = new ClientContext("http://mysite/"))
        {
            var credentials = new NetworkCredential(user, password, domain);

            clientcontext.Credentials = credentials;

            Web web = clientcontext.Web;
            clientcontext.Load(web);

            clientcontext.ExecuteQuery();
        }

谢谢!

2 个答案:

答案 0 :(得分:1)

对不起,我很抱歉。

请参阅下面的工作代码。 如果您在线使用SharePoint,请使用以下代码

 public static ClientContext GetClientContext(string url)
    {

        SecureString securePassword = new SecureString();
        ClientContext context = null;
        try
        {
            using (context = new ClientContext(url))
            {
                foreach (char c in "Password") securePassword.AppendChar(c);
                context.Credentials = new SharePointOnlineCredentials("user@tenent.onmicrosoft.com", securePassword);
                context.Load(context.Web, w => w.ServerRelativeUrl, w => w.Url);
                context.ExecuteQuery();


            }
        }
        catch (Exception ex)
        {

        }

        return context;
    }

如果您在本地服务器上使用SharePoint,则可以通过两种方式获取上下文。使用应用池帐户或传递您的用户信用。下面的代码使用默认的应用程序池凭据。

 string parentSiteUrl = Helper.GetParentWebUrl(siteUrl);
                    clientContext = new ClientContext(parentSiteUrl);
                    clientContext.Credentials = CredentialCache.DefaultCredentials;
                    clientContext.Load(clientContext.Web, w => w.Url, w => w.Lists, w => w.ServerRelativeUrl, w => w.Title, w => w.SiteGroups);                        
                    clientContext.ExecuteQuery();

或者您可以通过以下凭据。

 var clientContext = new ClientContext(siteUrl);
        clientContext.Credentials = new NetworkCredential("domain\\user", "password");
        clientContext.Load(clientContext.Web, w => w.Lists);
        clientContext.ExecuteQuery();

如果您有任何疑问,请与我们联系。

答案 1 :(得分:0)

使用“Microsoft.SharePoint.Client.dll”和“Microsoft.SharePoint.Client.Runtime.dll”。

 using (ClientContext clientcontext = new ClientContext("http://mysite/"))
    {
        var credentials = new NetworkCredential(domain\UserName, password);
        clientcontext.Credentials = credentials;
        Web web = clientcontext.Web;
        clientcontext.Load(web);
        clientcontext.ExecuteQuery();
    }