2010-07-21 4 views
1

Nous avons le code suivant dans un webpart:Problème ajout d'un champ dynamique à un SPList dans sharepoint

using (SPSite site = new SPSite("http://localhost/")) 
{ 
    using (SPWeb web = site.OpenWeb()) 
    { 
    SPList list = web.SiteUserInfoList; 
    if (!list.Fields.ContainsField("Office")) 
    { 
     list.Fields.Add("Office", SPFieldType.Text, false); 
     list.Update(); 
    } 
    } 
} 

dans la 4ème ligne où l'on ajoute un élément à la liste nous obtenons cette erreur: « Les mises à jour sont actuellement non autorisé sur les requêtes GET Pour autoriser les mises à jour sur un GET, définissez la propriété 'AllowUnsafeUpdates' sur SPWeb ".

Ensuite, nous avons ajouté cette ligne avant d'ajouter l'élément à la liste:

web.AllowUnsafeUpdates = true; 

Maintenant, nous obtenons cette erreur: « Vous êtes actuellement connecté comme: [domaine] \ nom d'utilisateur ». Connectez-vous en tant que utilisateur différent.

Le compte que nous utilisons possède également un accès administratif. Toute idée de comment nous pouvons obtenir le code suivant l'exécution:

web.AllowUnsafeUpdates = true; 
list.Fields.Add("Office", SPFieldType.Text, false); 
list.Update(); 
+0

Quel est le contexte de SPWeb et est le code qui s'exécute à partir de (une des) machine (s) de la ferme? –

+0

J'ai mis à jour le code. Il n'y a qu'un seul serveur - c'est ce que vous voulez dire par machine agricole. – Rahatur

Répondre

1

Got fonctionner de la façon suivante:

SPSecurity.RunWithElevatedPrivileges(delegate() 
{ 
    using (SPSite site = new SPSite(web.Site.ID)) 
    { 
     using (SPWeb web = site.OpenWeb()) 
     { 
     SPList list = web.SiteUserInfoList; 
     if (!list.Fields.ContainsField("Office")) 
     { 
      list.Fields.Add("Office", SPFieldType.Text, false); 
      list.Update(); 
     } 
     } 
    } 
}); 

nécessaire pour exécuter les codes des droits de contrôle complets :) Mais nous ne devrions pas être écrit toutes les morues de cette façon.

Questions connexes