SharePointでアクセスできるユーザーとフォルダーのリストを取得する必要がありますが、既にファイルをコピーしていますが、サイトの構造を理解できないため、サイトで正しいリスト名を取得できます。
私のURLは https://mySPsite/sites/MySite
これは、ファイルをサイトにコピーする別の関数でコンテキストを設定するために使用するURLです。の形式のファイルURLでSaveBinaryDirectを使用しているため、コピー場所の形式は少し異なります/sites/MySite/Shared Documents/MyFolder/MySubFolder
。ファイルコピールーチンは正常に機能します。
私が今やろうとしているのは、フォルダとそれらにアクセスできるユーザーのリストを取得することです。フォルダは、MySubFolder
内のすべてのフォルダですMyFolder
私が抱えている問題は、フォルダ名の組み合わせを試しても、サイトにリストが見つからないというエラーが表示されることです。以下に掲載されているソリューションを使用しています
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);
}
}
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加