Чтение списка 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();
Другие вопросы по тегам