2010-02-11 5 views
1

J'utilise l'authentification par formulaire pour me connecter au service Windows sharepoint servicevices 3.0. Je dois élever pendant l'accès anonyme, droits pour ajouter l'enregistrement à la liste de portail de sharepoint.Comment exécuter des commandes avec des privilèges élevés dans Windows SharePoint Services 3.0?

J'ai trouvé la moindre idée de msdn: http://msdn.microsoft.com/en-us/library/bb466220%28classic%29.aspx

Mais ça ne marche pas pour moi. :(Il vous appelle encore pour nom d'utilisateur et mot de passe

Quelqu'un peut-il me aider s'il vous plaît

Public Function AddUserAccountData() As String 
     SPSecurity.RunWithElevatedPrivileges(AddressOf AddUserAccountDataToSPList) 
     Return "" 
    End Function 

    Private Sub AddUserAccountDataToSPList() 
     Dim oSharedConfig As SharedConfig = SharedConfig.Instance 
     Dim sListName As String = oSharedConfig.oWebPartsOpt.UserOpt.AccountVerificationList.Name 

     Using oSite As SPWeb = SPContext.Current.Web 
      Dim oUserAccStatusList As SPList = oSite.Lists(sListName) 

      oUserAccStatusList.Items.Add() 
      Dim oSPListItem As SPListItem = oUserAccStatusList.Items.Add() 

      oSPListItem("one") = _sUserLogin 
      oSPListItem("two") = _sUserGuid 
      oSPListItem("three") = False 
      oSPListItem("four") = DateTime.Now 

      oSPListItem.Update() 
     End Using 
    End Sub 
+0

Ne fonctionne pas comment? Recevez-vous toujours ** Accès refusé ** ou une autre erreur? (Si vous POSTez des données, SharePoint lancera une autre exception, par exemple, et il existe de nombreux autres cas). Pouvez-vous poster le code qui appelle 'RunWithElevatedPrivileges', ouvre le site et ajoute l'élément? – Kobi

Répondre

2

Lorsque vous utilisez RunWithElevatedPrivileges vous ne devriez pas utiliser SPContext.Current -.?. Il a encore les anciennes autorisations Vous devez rouvrir votre SPWeb . pour lui donner les permissions sur votre code lié cela se fait par les lignes:

using (SPSite ElevatedsiteColl = new SPSite(siteColl.ID)) 
using (SPWeb ElevatedSite = ElevatedsiteColl.OpenWeb(site.ID)) 

Source:
RunWithElevatedPrivileges, watch out for the site context
Adding Items to a SharePoint List - de mon blog, pourrait aider avec votre prochain problème. Une autre note: vous ne devriez pas écrire Using oSite As SPWeb = SPContext.Current.Web. SPContext Les objets ne doivent pas être éliminés par vous - ils sont partagés entre différents composants, ce qui peut entraîner d'autres exceptions.
Ceci est une erreur commune - il aurait pu être mieux fait par l'API à mon avis.

+0

La réponse est sur votre blog ici: http://kobikobi.wordpress.com/2009/05/04/adding-items-to-a-sharepoint-list/ La clé pour la dernière erreur était la mise en place de l'indicateur: AllowUnsafeUpdates Merci! – truthseeker

0

La ligne

oUserAccStatusList.Items.Add() 

Attend un peu hors. Une fois que vous avez une référence à la SPList vous créez un nouveau listItem comme vous avez dans le code suivant, en appelant le Items.Add sur le listItem, définissez vos propriétés, puis appelez la méthode Update.

Questions connexes