gpt4 book ai didi

c# - 如何对 Project Online PSI 服务进行身份验证?

转载 作者:太空宇宙 更新时间:2023-11-03 21:18:37 26 4
gpt4 key购买 nike

我在 sharepoint.com 上有 MS Project Online 帐户,我需要从客户端 C# 代码到 PSI 服务进行身份验证以获取项目列表。

服务器具有基于表单的身份验证。我正在尝试通过下一个代码登录:

SvcLoginForms.LoginForms loginform = new SvcLoginForms.LoginForms();
loginform.Credentials = new NetworkCredential("admin@myserver.onmicrosoft.com", "password");
loginform.Url = "https://myserver.sharepoint.com/sites/pwa/_vti_bin/PSI/Project.asmx";
loginform.Login("admin@myserver.onmicrosoft.com", "password");

当我执行 loginform.Login 时,我收到带有消息的 SoapException:“值不能为空。参数名称:帐户”。内部异常 xml 是:

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">Value cannot be null.

参数名称:帐号

我做错了什么?

最佳答案

您可以使用:

new SharePointOnlineCredentials(username, secpassword);

代替

new NetworkCredential("admin@myserver.onmicrosoft.com", "password");

首先:安装需要的客户端SDK

其次:添加对你项目的引用

  1. Microsoft.SharePoint.Client.dll
  2. Microsoft.SharePoint.Client.Runtime.dll
  3. Microsoft.ProjectServer.Client.dll

您可以在 %programfiles%\Common Files\microsoft shared\Web Server Extensions\15\ISAPI 中找到 dll和 %programfiles(x86)%\Microsoft SDKs\Project 2013\REDIST

示例代码如下:

using System;
using System.Security;
using Microsoft.ProjectServer.Client;
using Microsoft.SharePoint.Client;

public class Program
{
private const string pwaPath = "https://[yoursitehere].sharepoint.com/sites/pwa";
private const string username ="[username]";
private const string password = "[password]";
static void Main(string[] args)
{
SecureString secpassword = new SecureString();
foreach (char c in password.ToCharArray()) secpassword.AppendChar(c);


ProjectContext pc = new ProjectContext(pwaPath);
pc.Credentials = new SharePointOnlineCredentials(username, secpassword);

//now you can query
pc.Load(pc.Projects);
pc.ExecuteQuery();
foreach(var p in pc.Projects)
{
Console.WriteLine(p.Name);
}

//Or Create a new project
ProjectCreationInformation newProj = new ProjectCreationInformation() {
Id = Guid.NewGuid(),
Name = "[your project name]",
Start = DateTime.Today.Date
};
PublishedProject newPublishedProj = pc.Projects.Add(newProj);
QueueJob qJob = pc.Projects.Update();

JobState jobState = pc.WaitForQueue(qJob,/*timeout for wait*/ 10);

}

}

关于c# - 如何对 Project Online PSI 服务进行身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32372670/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com