3

我想通过传递身份验证信息来实现自定义日志记录,如下面的参考链接所示:

我正在使用下面的代码,但它不会自动登录,而是会弹出登录窗口以输入用户名和密码。我想通过以编程方式传递凭据来自动登录。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint.Client;
using System.Net;
using MSDN.Samples.ClaimsAuth;

namespace Sp_Ctx
{
    class Program
    {
        [STAThread]
        static void Main(string[] args)
        {
            //if (args.Length < 1) { Console.WriteLine("SP_Ctx <url>"); return; }

            string targetSite = "https://mysite.sharepoint.com";//args[0];
            using (ClientContext ctx = ClaimClientContext.GetAuthenticatedContext(targetSite))
            {
                if (ctx != null)
                {
                    ctx.Credentials = new NetworkCredential("guest@mysite.com.au", "password", "mysite.sharepoint.com");
                    ctx.Load(ctx.Web); // Query for Web
                    ctx.ExecuteQuery(); // Execute
                    Console.WriteLine(ctx.Web.Title);
                }
            }
            Console.ReadLine();
        }
    }
}

更新:

我托管了一个MS 365 sharepoint 2013 站点,但我想使用版本 2010 身份验证机制。

4

2 回答 2

0

尝试这个:

ctx.Credentials = new NetworkCredential("guest", "password", "mysite.com.au");

凭据中的域应该是您的来宾帐户的域,而不是共享点服务器名称。

于 2014-10-03T07:30:55.503 回答
0

您使用的 MSDN 示例项目仅允许通过弹出窗口进行基于声明的身份验证。为了以编程方式执行此操作,我使用了不同的帮助程序库,即 Wictor Wilén 的声明演示。然后,您可以使用他的 MsOnlineClaimsHelper 类进行身份验证。以下是直接取自 Wictor 博客的示例代码:

MsOnlineClaimsHelper claimsHelper = new MsOnlineClaimsHelper(url, username, password);    

using (ClientContext context = new ClientContext(url)) {

  context.ExecutingWebRequest += claimsHelper.clientContext_ExecutingWebRequest;

  context.Load(context.Web);

  context.ExecuteQuery();

  Console.WriteLine("Name of the web is: " + context.Web.Title);

}

这就是我六个月前为一个项目所做的。但是,我很想知道是否有新的最佳实践或 Microsoft 提供的东西。

于 2014-04-23T20:28:44.670 回答