0

我们有文档库的自定义上传页面。在上传页面上,我们有一个人员选择器字段,(用户可以输入多个用户 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 但没有成功......

任何人都请让我知道如何解决此问题或使用人员选择器的替代方式

4

1 回答 1

0

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

SPWeb web=SPControl.GetContextWeb(Context)

您需要在提升的权限下使用它:

using (SPSite site = new SPSite(SPContext.Current.Web.Url))
{
   using(SPWeb web = site.OpenWeb())
   {
      ....
   }
}
于 2012-05-18T08:41:11.313 回答