我正在尝试访问特定用户的网站中所有文件夹(未隐藏)的权限
using (SPSite site = new SPSite(SPContext.Current.Web.Url))
{
SPWeb web = site.OpenWeb();
SPFolderCollection folders = web.Folders;;
foreach (SPFolder folder in web.Folders)
{
lblFolder.Text += "<br/><STRONG>" + folder.Name + "</STRONG>
<br/>";
foreach (SPRoleAssignment folderRole in folder.Item.RoleAssignments)
{ }// throws exception object specifies does not belong to list
}
不仅名称,但我需要该文件夹的权限,请帮助!!
由于
答案 0 :(得分:0)
SPWeb.Folders为您提供了网站“子文件夹”的集合(如_catalogs,Lists,...)这些都没有关联的列表项,其中一些像共享文档可能有一个关联的列表,但在这种情况下,它们是没有列表项的根文件夹(权利直接来自列表)。
所以你应该检查Item是否为null(在这种情况下可能使用ParentListId来获取List,如果它不是Guid.Empty)然后继续通过递归解析SubFolders
答案 1 :(得分:0)
当您抓住文档库的列表项时,您正在抓取文件夹?也就是说,假设他们从顶部继承。
using (SPSite site = new SPSite(SPContext.Current.Web.Url))
{
using (SPWeb web = site.OpenWeb())
{
SPDocumentLibrary docLib = (SPDocumentLibrary)web.Lists["Documents"];
SPQuery qry = new SPQuery();
qry.Query = "<Where><Eq><FieldRef Name='Title'><Value Type='Text'>"+title+"</Value></Eq></Where>";
SPListItemCollection docColl = new SPListItemCollection(qry);
List<string> perms = new List<string>();
if (docColl.Count > 0)
{
SPListItem fldrItem = docColl[0];
if (fldrItem.RoleAssignments.Count > 0) {
SPRoleAssignmentCollection assignColl = fldrItem.RoleAssignments;
foreach (SPRoleAssignment assignment in assignColl)
{
perms.Add(assignment.Member.LoginName);
Console.WriteLine("Perms: " + assignment.Member.LoginName);
}
}
}
}
}