今天在一个网站应用程序遍历另一个网站的子网站时用的Splist.AllWeb 方法,结果发现出了错误。一查发现时当前用户对其中的一个子站点没有访问权限,才导致该用户不能访问该页。解决的办法是获取网站是用权限提升的方法
SPSecurity.RunWithElevatedPrivileges(delegate()
{
// 需要提升权限执行的代码
});
然后再遍历时用方法spWeb.(DoesUserHavePermissions(string login,SPBasePermissions permissionMask)判断用户对此网站是否有权限访问即可.
其中 login是需要判断的用户、 permissionMask 是权限的基类型(枚举值)。并且SPsite splist spweb 都用此方法,以后碰到类似的问题都可以这样解决