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

时间:2016-06-13 18:26:56

标签: c# sharepoint-2013 csom project-server

我安装了Microsoft SharePoint 2013 onPremise Farm并安装了Microsoft Project Server 2013。

我正在尝试构建一个WebPart,它应该通过TeamSite中的CSOM连接到Project Server以获取项目信息。

这是我的超级简单代码:

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");

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

1 个答案:

答案 0 :(得分:0)

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

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