2012-04-24 104 views
1

我可以在Web部件中使用SharePoint客户端对象模型吗?抛出的Web部件中的SharePoint客户端对象模型401未授权

此代码在我的控制台应用程序中工作,但在Web部件中它返回“远程服务器返回错误:(401)未经授权。”

的代码是:

var siteUrl = "http://www.server.com/"; 
var clientContext = new ClientContext(siteUrl); 

var root = clientContext.Site.RootWeb; 
WebCollection collWeb = root.GetSubwebsForCurrentUser(null); 
clientContext.Load(root); 
clientContext.Load(collWeb); 
clientContext.ExecuteQuery(); 

的问题可能是客户端上下文不使用当前用户凭据。我该怎么办?

回答

2

您添加凭据clientContext:

System.Net.NetworkCredential cr = new System.Net.NetworkCredential("username", "password"); 

ClientContext clientContext = new ClientContext(siteURL); 

clientContext.Credentials = cr; 
+0

您也可以通过域作为第三个参数的NetworkCredential构造函数。 – Ste 2012-04-24 11:41:03

+0

谢谢,它的工作原理!还有一个问题:Web部件在SharePoint中运行。我如何使用当前用户的凭证?我可以这样说: clientContexrt.Credentials = CurrentUser.Credentials; – tplehton 2012-04-24 11:54:34

+0

太好了。请接受答案。 :)。对于您的下一个问题,您是否使用SharePoint 2010? – Ste 2012-04-24 12:01:01

0

你应该尝试

System.Net.CredentialCache.DefaultCredentials 

获得当前用户

的证书,但是,如果要调用一个远程SharePoint服务器,我恐怕它不会工作,因为double hop problem

调用远程SharePoint作为当前用户的方法是使用ECMA客户端对象模型......

当然,用户必须已历经logedin

相关问题