Требуется ли дополнительный код при разработке пользовательской визуальной веб-части для анонимного доступа? - PullRequest
1 голос
/ 21 октября 2011

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

Я включил анонимный доступ как в центре администрирования, так и на самом сайте, пользователиможете перейти на сайт и просматривать его без запроса пароля.Я позаботился о том, чтобы анонимный пользователь имел «просмотр» доступа к спискам в вопросах, но он по-прежнему не может просматривать страницы с пользовательской веб-частью.

Так что это параметр SharePoint или мне нужно добавитьчто-то в моих проектах веб-частей?

Заранее спасибо.

Редактировать:

Я вызываю этот метод при загрузке страницы и все равно получаю ту же ошибку

private void LoadImageGallery()
{
    SPSecurity.RunWithElevatedPrivileges(delegate()
    {
    SPSite oSiteCollection = SPContext.Current.Site;
    SPWebCollection collWebsites = oSiteCollection.AllWebs;
        DataTable dt = new DataTable();
        for (int i = 0; i < collWebsites.Count; i++)
        {
            using (SPWeb oWebsite = collWebsites[i])
            {
                if (oWebsite.Title == "People")
                {
                    SPList peopleList = oWebsite.Lists["Pages"];
                    if (peopleList != null)
                    {
                        SPListItemCollection collListItems = peopleList.Items;
                        dt = collListItems.GetDataTable();
                        // Include Surname to omit default/search page
                        dt = collListItems.GetDataTable();
                        rptImageGallery.DataSource = dt;
                        rptImageGallery.DataBind();
                    }
                }
            }
        }
    });
}

Я также пытался с

SPSite oSiteCollection = SPContext.Current.Site;
SPWebCollection collWebsites = oSiteCollection.AllWebs;

выше runwithelevated ..

Я установил для system \ sharepoint полный контроль над всем сайтом

Ответы [ 2 ]

1 голос
/ 21 октября 2011

Пользовательская страница должна соответствовать двум требованиям, чтобы анонимные пользователи могли получить к ней доступ:

  1. она должна наследоваться от класса UnsecuredLayoutsPageBase ,
  2. свойство AllowAnonymousAccess необходимо переопределить для возврата true.
0 голосов
/ 22 октября 2011

Для анонимного доступа вы должны изменить свой код для доступа к списку доступа, чтобы связать раскрывающийся список, как показано ниже. Добавьте свой код в SPSecurity.RunWithElevatedPrivileges Метод делегата.

       SPSecurity.RunWithElevatedPrivileges(delegate() {
          using (SPSite site = new SPSite(web.Site.ID))
          {            
             //ADD YOUR WEB PART Code HERE     
          }
       });

Важное замечание: Вы должны создать объекты SharePoint в этом делегате, иначе код не будет работать с правами администратора.

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