401在SharePoint 2007中未经授权

时间:2010-02-10 15:19:53

标签: sharepoint web-parts http-status-code-401

我创建了一个从文档库中收集信息的Web部件。它在“admin”Web应用程序下运行良好(我们有两个Web应用程序:非匿名用户的admin站点;匿名用户的www站点。这两个站点共享相同的内容。)

当我打开www站点时,它显示空Web部件,当它不是对文档库的引用时。但是,当它链接到文档库时,它显示401 UNAUTHORIZED。 CQWP可以从管理员和www站点成功查询相同的文档库。

任何帮助?

感谢。

2 个答案:

答案 0 :(得分:2)

解决。

似乎从SPSite对象siteCollection的属性中枚举的SPWeb对象AllWebs对每个Web对象执行安全检查。

如果用户没有特定Web对象的权限,则会在上一级引发错误,从而导致401页。

使用提升的权限解决了这个问题。

SPSecurity.RunWithElevatedPrivileges(delegate()
{
    foreach (SPWeb s in siteCollection.AllWebs)
    {...}
});

MSDN文章: http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsecurity.runwithelevatedprivileges.aspx

答案 1 :(得分:1)

小心使用提升的权限运行。 SharePoint知道谁在发出请求,并且可以根据该用户的权限调整结果。使用提升的权限运行可以返回不适合该人的结果。