Чтение списка SharePoint в многосайтовой коллекции SharePoint Online
У меня есть функция, которая запускается в размещенном провайдером приложении (написанном на C# и использующем CSOM) и получает доступ к списку моего клиента SharePointOnline.
Функция работает точно так, как задумано, пока я получаю доступ к приложению, размещенному провайдером, из семейства сайтов, в котором я создал список.
public bool CanUserReadList(ClientContext context, string listId)
{
try
{
if (string.IsNullOrWhiteSpace(listId)) return false;
List list = context.Web.Lists.GetById(new Guid(listId));
context.Load(list, a => a.EffectiveBasePermissions,a=> a.DefaultViewUrl);
context.ExecuteQuery();
return list.EffectiveBasePermissions.Has(PermissionKind.OpenItems);
}
catch (Exception e)
{
//Error thrown if accessing from different site collection to
}
}
Однако, если я получаю доступ к приложению, размещенному поставщиком, из другого семейства сайтов, я не могу получить доступ к списку (я получаю файл не найден).
Как получить доступ к списку, содержащемуся в одном семействе сайтов, из другого с помощью библиотеки CSOM Microsoft.SharePoint.Client?
Как мне выполнить "Перекрестное собрание сайтов" для чтения списка в приложении, размещенном в CSOM/Provider-Hosted?
"On-Prem" Я бы открыл SPSite, используя URL-адрес списка... но все, что я до сих пор пробовал в CSOM/SharePointOnline, не удалось.
0 ответов
Попробуйте создать контекст семейства сайтов, к которому вы пытаетесь получить доступ.
ClientContext context = new ClientContext(“[Site URL]”);
Web web = context.Web;
context.Load(web);
context.ExecuteQuery();