Web部件中的SharePoint客户端对象模型抛出401未经授权

时间:2012-04-24 11:34:19

标签: sharepoint

我可以在Web部件中使用SharePoint客户端对象模型吗?

此代码在我的控制台应用程序中有效,但在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 个答案:

答案 0 :(得分:2)

您将凭据添加到clientContext:

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

ClientContext clientContext = new ClientContext(siteURL);

clientContext.Credentials = cr;

答案 1 :(得分:0)

你应该试试

System.Net.CredentialCache.DefaultCredentials 

获取当前用户的凭据

但是,如果您正在呼叫远程共享点服务器,我担心它不会起作用,因为double hop problem

当CURRENT USER使用ECMA客户端对象模型时调用远程共享点的方式...

当然,用户必须全部使用