Access Denied : SPSecurity.RunWithElevatedPrivileges(Address Of GetItems)
Salut à tous,
Je suis la tuto pour développer une page applicative.
J'ai copié le code (à la main pour comprendre ce que je fais) et j'ai une NullPointerException sur la boucle qui parcourt mes collections.
J'ai ajouté un try catch qui ne fait rien dans le catch pour voir et je n'ai aucune collection qui s'affiche (donc, je suppose que le problème conerne toutes les collections).
Voici mon code :
Code:
1 2 3 4
|
Private Sub DropDownList1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DropDownList1.SelectedIndexChanged
SPSecurity.RunWithElevatedPrivileges(AddressOf GetItems)
End Sub |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| 'Trouve tous les items créé par un utilisateur dans la ferme
Private Sub GetItems()
Dim CurrentUser As New SPFieldUserValue(Me.Web, Me.Web.CurrentUser.ID, Me.Web.CurrentUser.Name)
Dim ResultList As New ArrayList
Dim ThisFarm As SPFarm = SPFarm.Local
Dim Service As SPWebService = ThisFarm.Services.GetValue(Of SPWebService)("")
Dim WebApp As SPWebApplication = Nothing
For Each WebAppl In Service.WebApplications
Dim SiteCollection As SPSite
Try
For Each SiteCollection In WebApp.Sites
Dim Web As SPWeb
For Each Web In SiteCollection.AllWebs
Dim Lists As SPListCollection = Web.Lists
Dim List As SPList
For Each List In Lists
Dim Item As SPItem
Try
For Each Item In List.Items
If Item(DropDownList1.SelectedValue).ToString = CurrentUser.ToString Then
ResultList.Add(Item)
End If
Next
Catch ex As Exception
'S'il y a une erreur, ne rien faire et passer à la liste suivante
End Try
Next
Next
Next
Catch ex As Exception
'S'il y a une erreur, ne rien faire et passer à la collection suivante
End Try
Next
End Sub |
Voici celui de la procédure :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| Private Sub GetItems()
Dim CurrentUser As New SPFieldUserValue _
(Me.Web, Me.Web.CurrentUser.ID, Me.Web.CurrentUser.Name)
Dim ResultsList As New ArrayList()
Dim ThisFarm As SPFarm = SPFarm.Local
Dim Service As SPWebService = _
ThisFarm.Services.GetValue(Of SPWebService)("")
Dim WebApp As SPWebApplication
For Each WebApp In Service.WebApplications
Dim SiteCollection As SPSite
For Each SiteCollection In WebApp.Sites
Dim Web As SPWeb
For Each Web In SiteCollection.AllWebs
Dim Lists As SPListCollection = Web.Lists
Dim List As SPList
For Each List In Lists
Dim Item As SPListItem
Try
For Each Item In List.Items
If Item(DropDownList1.SelectedValue).ToString() = _
CurrentUser.ToString() Then
ResultsList.Add(Item)
End If
Next Item
Catch exception As Exception
'Error in list. Move on to the next list.
End Try
Next List
Next Web
Next SiteCollection
Next WebApp
CreateResultsTable(ResultsList)
End Sub |
J'ai essayé de voir la différence (à part mon try catch, hein!) mais je ne vois pas ce qui cloche.
Est-ce que c'est le code du site qui a une faille ou bien est-ce que c'est moi qui ai mal tapé mon code?
Si vous voulez bien jeter un oeil...
Merci d'avance.