C# 和 SharePoint 2013 - 了解上下文和列表
C# and SharePoint 2013 - understanding context and lists
我需要获取用户列表以及他们在 SharePoint 上有权访问的文件夹我已经将文件复制到但无法理解网站的结构所以我可以在中获取正确的列表名称网站。
我的URL是https://mySPsite/sites/MySite
这是我用来在将文件复制到站点的另一个函数中设置上下文的 url。复制位置的格式略有不同,因为我将 SaveBinaryDirect 与格式 /sites/MySite/Shared Documents/MyFolder/MySubFolder
的文件 url 一起使用。文件复制例程工作正常。
我现在要做的是获取文件夹列表以及有权访问它们的用户。这些文件夹是 MyFolder
中的所有 MySubFolder
文件夹
我遇到的问题是,无论我尝试使用何种文件夹名称组合,我都会收到一条错误消息,提示无法在站点中找到该列表。我正在使用下面发布的解决方案
using (var ctx = new ClientContext(webUri))
{
var list = ctx.Web.Lists.GetByTitle(listTitle);
var items = list.GetItems(CamlQuery.CreateAllFoldersQuery());
ctx.Load(items, icol => icol.Include(i => i.RoleAssignments.Include( ra => ra.Member), i => i.DisplayName ));
ctx.ExecuteQuery();
foreach (var item in items)
{
Console.WriteLine("{0} folder permissions",item.DisplayName);
foreach (var assignment in item.RoleAssignments)
{
Console.WriteLine(assignment.Member.Title);
}
}
}
由 Vadim 获取文件夹权限。我显然错过了 WebUri
和 listTitle
之间的联系,希望得到任何帮助。
这是正确的代码。成功的关键是设置正确的 query.FolderServerRelativeUrl
.
private static void PrintFolderPermission(string webUri, string listTitle)
{
using (var ctx = new ClientContext(webUri))
{
var list = ctx.Web.Lists.GetByTitle(listTitle);
var query = CamlQuery.CreateAllFoldersQuery();
query.FolderServerRelativeUrl = "/sites/custom-dev/Shared documents/MyFolder/MySubfolder";
var items = list.GetItems(query);
ctx.Load(items, icol => icol.Include(i => i.RoleAssignments.Include(ra => ra.Member), i => i.DisplayName));
ctx.ExecuteQuery();
foreach (var item in items)
{
Debug.WriteLine(item.DisplayName + " folder permissions");
foreach (var assignment in item.RoleAssignments)
{
Debug.WriteLine(assignment.Member.Title);
}
}
}
}
我需要获取用户列表以及他们在 SharePoint 上有权访问的文件夹我已经将文件复制到但无法理解网站的结构所以我可以在中获取正确的列表名称网站。
我的URL是https://mySPsite/sites/MySite
这是我用来在将文件复制到站点的另一个函数中设置上下文的 url。复制位置的格式略有不同,因为我将 SaveBinaryDirect 与格式 /sites/MySite/Shared Documents/MyFolder/MySubFolder
的文件 url 一起使用。文件复制例程工作正常。
我现在要做的是获取文件夹列表以及有权访问它们的用户。这些文件夹是 MyFolder
MySubFolder
文件夹
我遇到的问题是,无论我尝试使用何种文件夹名称组合,我都会收到一条错误消息,提示无法在站点中找到该列表。我正在使用下面发布的解决方案
using (var ctx = new ClientContext(webUri))
{
var list = ctx.Web.Lists.GetByTitle(listTitle);
var items = list.GetItems(CamlQuery.CreateAllFoldersQuery());
ctx.Load(items, icol => icol.Include(i => i.RoleAssignments.Include( ra => ra.Member), i => i.DisplayName ));
ctx.ExecuteQuery();
foreach (var item in items)
{
Console.WriteLine("{0} folder permissions",item.DisplayName);
foreach (var assignment in item.RoleAssignments)
{
Console.WriteLine(assignment.Member.Title);
}
}
}
由 Vadim 获取文件夹权限。我显然错过了 WebUri
和 listTitle
之间的联系,希望得到任何帮助。
这是正确的代码。成功的关键是设置正确的 query.FolderServerRelativeUrl
.
private static void PrintFolderPermission(string webUri, string listTitle)
{
using (var ctx = new ClientContext(webUri))
{
var list = ctx.Web.Lists.GetByTitle(listTitle);
var query = CamlQuery.CreateAllFoldersQuery();
query.FolderServerRelativeUrl = "/sites/custom-dev/Shared documents/MyFolder/MySubfolder";
var items = list.GetItems(query);
ctx.Load(items, icol => icol.Include(i => i.RoleAssignments.Include(ra => ra.Member), i => i.DisplayName));
ctx.ExecuteQuery();
foreach (var item in items)
{
Debug.WriteLine(item.DisplayName + " folder permissions");
foreach (var assignment in item.RoleAssignments)
{
Debug.WriteLine(assignment.Member.Title);
}
}
}
}