0

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

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

有什么帮助吗?

谢谢。

4

2 回答 2

2

解决了。

似乎从 SPSite 对象 siteCollection 的属性 AllWebs 枚举的 SPWeb 对象对每个 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

于 2010-02-10T17:05:41.290 回答
1

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

于 2010-02-11T20:20:00.800 回答