0

ドキュメントライブラリのカスタムアップロードページがあります。アップロードページには、1人のピッカーフィールドがあります(ユーザーは複数のユーザーIDを入力できます)Design for People Picker

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

ピープルピッカーからempidを取得するには、以下のコードを使用します

 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 オブジェクトの SPContext を使用する代わりに、昇格された権限で新しいサイトと Web オブジェクトを作成する必要があります。

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 に答える