Страница SharePoint с usercontrol дает Вам не разрешено просматривать эту страницу ошибки - PullRequest
0 голосов
/ 10 февраля 2012

У меня необычный сценарий, при котором только одна страница нашего сайта SP 2007 выдает эту ошибку «У вас нет прав для просмотра этой страницы».

Вот некоторые детали: SP 2007 Enterprise Данная страница использует SmartPart для отображения пользовательского контроля.
У нас есть более 50 страниц, которые также используют пользовательские элементы управления в SmartPart, и ни одна из них не генерирует эту ошибку.

У рассматриваемой страницы есть несколько функций, и она изначально загружается просто отлично. При первой загрузке пользователь выбирает клиента из раскрывающегося списка, затем вводит поисковый запрос и нажимает кнопку поиска. Это все работает, и страница возвращает результаты поиска. Это также работает. Пользователь может щелкнуть ссылку «Изменить» для каждого элемента. При нажатии на эту ссылку «Изменить» возникает ошибка страницы. Все эти вещи выполняются на одной странице, они просто обновляются соответствующим образом. Ссылка Modify - это просто стандартное поле командной строки asp:, которое заставляет страницу загружать позицию в редактируемом режиме.

Вот еще одна странная вещь. Если я войду в систему под учетной записью администратора SP и зайду на эту страницу, все будет работать нормально, без ошибок ... и тогда все остальные пользователи смогут войти и правильно использовать страницу, также без ошибок. Как будто проблема с безопасностью временно разрешается в результате того, что администратор сначала использует страницу. Но после публикации кода или IISRESET и т. Д. Страница снова перестает работать для обычных пользователей.

Любые идеи о том, что я должен искать в попытке решить эту проблему? Я также могу предоставить код, если кто-то считает, что это может иметь отношение.

Спасибо!

1 Ответ

2 голосов
/ 15 февраля 2012
use SPSecurity.RunWithElevatedPrivileges for running your code with anonymous access user:
    SPSecurity.RunWithElevatedPrivileges(delegate()
    {
        using (SPSite site = new SPSite(web.Site.ID))
        {
        // implementation details omitted
        }
    });
...