尝试通过 CSOM 连接到 Project Server 时出现 ServerUnauthorizedAccessException

ServerUnauthorizedAccessException when trying to connect to Project Server through CSOM

我有 Microsoft SharePoint 2013 onPremise Farm,上面安装了 Microsoft Project Server 2013。

我正在尝试构建一个 WebPart,它应该通过来自 TeamSite 的 CSOM 连接到项目服务器以获取项目信息。

这是我超级简单的代码:

string pwaPath = "http://sp2013/PWA";
ProjectContext projContext;

projContext = new ProjectContext(pwaPath);

projContext.Load(projContext.Projects);
projContext.ExecuteQuery();

尝试执行时出现以下错误:

ServerUnauthorizedAccessException

当我添加

projContext.Credentials = new NetworkCredential("administrator", "pass", "domain");

有效!但是我如何使用登录用户制作代码,因为上面传递的凭据是当前登录的用户凭据。

您的代码将无法运行,因为服务器场解决方案不会在 SharePoint 用户的上下文中执行。如果您检查 System.Security.Principal.WindowsIdentity.GetCurrent(),您会看到当前身份是 IIS 内置的 IUSR。这是 ClientContext 将用于发出请求的身份。

如果您使用 SPSecurity.RunWithElevatedPrivileges() 提升权限,代码将以应用程序池身份执行。这在某些情况下可能就足够了,但也可能不安全,因为所有用户都将能够访问资源。