在自定义页面上使用人员选取器时访问被拒绝错误

时间:2012-04-27 15:55:41

标签: sharepoint sharepoint-2007 peoplepicker

我们有文档库的自定义上传页面。 在上传页面上,我们有一个人选择器字段, (用户可以输入多个用户ID) 人员选择器设计

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

从我们在代码下面使用的人选择器获取emp id

 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但没有成功......

任何人请告诉我如何解决此问题或使用人员选择器的替代方法

1 个答案:

答案 0 :(得分:0)

您需要在提升的权限下创建新网站和Web对象,而不是使用Web对象的SPContext。

SPWeb web=SPControl.GetContextWeb(Context)

您需要在提升的权限下使用此功能:

using (SPSite site = new SPSite(SPContext.Current.Web.Url))
{
   using(SPWeb web = site.OpenWeb())
   {
      ....
   }
}