AccessDenied.aspx / List не существует в списке, к которому у пользователя есть доступ - PullRequest
0 голосов
/ 05 января 2011

Я получаю эту ошибку:

Список не существует Выбранная страница содержит список, который не существует.Возможно, он был удален другим пользователем.в Microsoft.SharePoint.Library.SPRequestInternalClass.GetListsWithCallback ...

К сожалению, это не неопубликованное проявление ошибки главной страницы - GUID списка в строке запроса приводит к одному из нескольких списков в корневой сети, которые используютсядля отображения пользовательских настроек в элементах управления на главной странице.

Доступ к списку осуществляется с помощью следующего кода:

_RootWeb = SPContext.Current.Site.RootWeb;
storageList = _RootWeb.GetList(_RootWeb.Url + "/Lists/" + 
                              LocalStrings.TimeZoneStorageList.ListName);
SPListItemCollection result = list.GetItems(query);
SPListItem StorageItem = result[0];

xmlDoc.LoadXml(StorageItem[LocalStrings.TimeZoneStorageList.Fields.UserXML]
                                                                   .ToString());

Есть ли что-то, что может привести к тому, что этот код вызовет исключение AccessDeniedException, пока пользователь сможет получить доступ к списку через пользовательский интерфейс?

В качестве альтернативы, возможно ли, чтобы SharePoint сообщал о списке как источнике ошибки, когда проблема с разрешениями фактически полностью где-то еще?

Ответы [ 4 ]

1 голос
/ 05 января 2011

Есть ли что-нибудь, что может вызвать этот код, чтобы бросить AccessDeniedException, пока пользователь может получить доступ к списку через UI

Это может не применяться в вашем случае, но да, у меня было такое с:

  1. Поля поиска, в которых у пользователя не было разрешений на просмотр списка
  2. Поля людей, отфильтрованные для выбранной группы SharePoint, в которой у пользователя не было разрешений на просмотр членства в группе.

В обоих случаях эти поля не были включены в представления или формы, обычно используемые пользователем, поэтому проблема не была сразу обнаружена.

0 голосов
/ 16 ноября 2012

Вопрос для меня был довольно простым. У меня был пользователь, у которого были разрешения на текущий сайт, и это нормально. Однако на странице была веб-часть со списком. Я получил сообщение об ошибке при доступе к элементам с дочернего сайта, к которому у текущего пользователя нет доступа.

В моем случае ошибка должна была гласить «доступ запрещен для списка».

0 голосов
/ 06 января 2011

Идентификатор списка в строке запроса на AccessDenied.aspx может фактически не иметь отношения к фактической ошибке.Соответствующий код был что-то вроде

try {
    throw new AccessDeniedException();
    } 
catch (Exception ex) {}

storageList = _RootWeb.GetList(ListUrl);  

Если CatchAccessDeniedException не отключен, SharePoint увидит исключение, несмотря на перехват и прерывание потока.Поскольку это контролируется в другом потоке, он не является синхронным, и код продолжает работать достаточно долго, чтобы поток прерывался в середине доступа к списку.

Обе части сообщения об ошибке технически правильны - возникла исключительная ситуация AccessDeniedException, и последняя операция пыталась открыть список - но между ними нет фактической связи.

Фактическаяпроблема оказалась в разрешениях учетной записи службы для mysites, которые естественно никогда не появлялись ни в каких журналах или сообщениях об ошибках.

0 голосов
/ 05 января 2011

Можете ли вы попробовать получить список как

_RootWeb.Lists[strListName]

где strListName - заголовок списка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...