Ошибка отказа в доступе при использовании средства выбора людей на настраиваемой странице

У нас есть настраиваемая страница загрузки для библиотеки документов. На странице загрузки у нас есть одно поле выбора людей (пользователь может ввести несколько идентификаторов пользователей) Дизайн для выбора людей

<SharePoint:PeopleEditor ID="pplApprovers" runat="server" Width="250px" Height="25px" MultiSelect="true"/>

чтобы получить идентификатор emp из средства выбора людей, мы используем приведенный ниже код

 public ArrayList approversArray; 
public SPFieldUserValueCollection approversCollection; 

try
{
SPSecurity.RunWithElevatedPrivileges(delegate()
 { 
  ArrayList aAccount1 = new ArrayList();
    approversArray= pplApprovers.Entities;

approversCollection = new SPFieldUserValueCollection(); 
SPUser user; 
SPGroup group; 
SPUser currentUser;
SPWeb web=SPControl.GetContextWeb(Context);
currentUser=web.CurrentUser;
 ArrayList aAccount = new ArrayList();
aAccount = pplApprovers.Accounts;
ArrayList peEntities = pplApprovers.Entities;
approversArray = pplApprovers.ResolvedEntities;

foreach (PickerEntity entity in approversArray) 
{
if (entity.EntityData["PrincipalType"].ToString() == "SharePointGroup") 
{
    group = web.SiteGroups[entity.Key]; 
    approversCollection.Add(new SPFieldUserValue(web,group.ID, group.Name)); 
} 
else 
{
    //handles SecurityGroup, Distribution List and User 
    user = web.EnsureUser(entity.Key); 
    approversCollection.Add(new SPFieldUserValue(web,user.ID, user.Name)); 
} 
} 
}); 

catch (Exception ex)
{
// Manage error event
}

и после получения этого значения мы вставляем его в библиотеку документов.

item.Item["Account Partner"]="approversCollection";

но после нажатия кнопки загрузки единственный пользователь, у которого есть доступ администратора сайта, может успешно загрузить файл, но другой пользователь, у которого нет прав администратора, будет перенаправлен на https://web/_layouts/AccessDenied.aspx страница

Мы пробовали использовать SPSecurity.RunWithElevatedPrivileges, но безуспешно ...

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


person Rushikesh    schedule 27.04.2012    source источник
comment
Где он терпит неудачу? И, пожалуйста, покажите код, который вы используете, когда используете RunWithElevatedPrivileges.   -  person Chris Farmer    schedule 27.04.2012
comment
когда я комментирую приведенный выше код, пользователь без прав администратора также может загружать ... Я не понимаю точную строку, в которой произошел сбой. ниже для RunWithElevatedPrivileges, SPSecurity.RunWithElevatedPrivileges (delegate () {});   -  person Rushikesh    schedule 28.04.2012
comment
Ваш последний комментарий не имеет смысла. Почему вы не можете сказать, какая строка не работает? А что запускается в надземном блоке? Вы же не имеете в виду, что ничего не запускаете внутри надземного блока, верно?   -  person Chris Farmer    schedule 28.04.2012
comment
Привет, я добавил RunWithElevatedPrivileges в вопрос .. Мы также не можем отслеживать и пытаться найти, из-за какой именно строки код не работает. Спасибо, что нашли время ..   -  person Rushikesh    schedule 30.04.2012
comment
Я все еще не понимаю. У вас нет трассировки стека за исключением?   -  person Chris Farmer    schedule 30.04.2012
comment
На худой конец закинуть туда временный вход.   -  person Chris Farmer    schedule 30.04.2012
comment
мы не получаем никаких исключений .. пользователь просто перенаправляется на страницу с отказом в доступе :( Большое спасибо за попытку разобраться в проблеме   -  person Rushikesh    schedule 30.04.2012


Ответы (1)


Вместо использования SPContext веб-объекта вам необходимо создать новый сайт и веб-объект с повышенными привилегиями.

SPWeb web=SPControl.GetContextWeb(Context)

Вам необходимо использовать это с вашими повышенными разрешениями:

using (SPSite site = new SPSite(SPContext.Current.Web.Url))
{
   using(SPWeb web = site.OpenWeb())
   {
      ....
   }
}
person Emmie Lewis-Briggman    schedule 18.05.2012