我创建了一个从文档库中收集信息的Web部件。它在“admin”Web应用程序下运行良好(我们有两个Web应用程序:非匿名用户的admin站点;匿名用户的www站点。这两个站点共享相同的内容。)
当我打开www站点时,它显示空Web部件,当它不是对文档库的引用时。但是,当它链接到文档库时,它显示401 UNAUTHORIZED。 CQWP可以从管理员和www站点成功查询相同的文档库。
任何帮助?
感谢。
答案 0 :(得分:2)
解决。
似乎从SPSite对象siteCollection的属性中枚举的SPWeb对象AllWebs对每个Web对象执行安全检查。
如果用户没有特定Web对象的权限,则会在上一级引发错误,从而导致401页。
使用提升的权限解决了这个问题。
SPSecurity.RunWithElevatedPrivileges(delegate()
{
foreach (SPWeb s in siteCollection.AllWebs)
{...}
});
答案 1 :(得分:1)
小心使用提升的权限运行。 SharePoint知道谁在发出请求,并且可以根据该用户的权限调整结果。使用提升的权限运行可以返回不适合该人的结果。