OVH Cloud OVH Cloud

[WSS2003] Delete et SPListItem et problème de droits

2 réponses
Avatar
Patrick
Bonjour,

Je suis en train de coder une interface web (page aspx) qui permet aux
utilisateurs d'archiver les éléments d'une liste Sharepoint dans un site WSS.
Archiver ici, signifie copier l'élément dans une autre liste SharePoint et
supprimer l'item de la liste SharePoint d'origine. Pour cela, j'utilise
l'impersonisation.
Malgé cela, mon code (C#) ne fonctionne que lorsque je suis connecté en tant
qu'administrateur SPS.
Quand je me connecte avec un compte autre qu'administrateur, à la fonction
MesItems.Delete(MonitemIndex), je reçois un message d'erreur qui me dit que
je n'ai pas les droits suffisants.

J'ai même mis ma dll dans le GAC (pour le full trust).Et pareil, je ne peux
toujours pas supprimer un élément de liste.
Qu'est-ce que j'aurais oublié ?

Ci-dessous une partie du code :
**********************************************************
//Impersonation
// La fonction CreateIdentity est une fonction qui crée le WindowsIdentity
admin
System.Security.Principal.WindowsImpersonationContext wic =
CreateIdentity(strUser, strDomain, strPwd).Impersonate();
SPListItemCollection listItems = MaListeSPS.Items;
int itemCount = listItems.Count;
for (int i=0; i<itemCount; i++)
{
SPListItem item = listItems[i];
if (MaCondition == true)
{
listItems.Delete(i); // ---> Plantage
break;
}
}
wic.Undo();
*******************************************
Je ne sais pas ce que je peux faire de plus.Merci.

2 réponses

Avatar
Stephane CORDONNIER [MVP]
Il faut faire l'impersonation avant de récupérer l'objet SPSite car après
c'est trop tard et les autres classes du modèle objet récupèrent les mêmes
credentials que ceux qu'utilise cet objet SPSite.

--
Stephane CORDONNIER
Microsoft MVP - France
http://www.sharepoint-france.com


"Patrick" a écrit dans le message de
news:
Bonjour,

Je suis en train de coder une interface web (page aspx) qui permet aux
utilisateurs d'archiver les éléments d'une liste Sharepoint dans un site
WSS.
Archiver ici, signifie copier l'élément dans une autre liste SharePoint et
supprimer l'item de la liste SharePoint d'origine. Pour cela, j'utilise
l'impersonisation.
Malgé cela, mon code (C#) ne fonctionne que lorsque je suis connecté en
tant
qu'administrateur SPS.
Quand je me connecte avec un compte autre qu'administrateur, à la fonction
MesItems.Delete(MonitemIndex), je reçois un message d'erreur qui me dit
que
je n'ai pas les droits suffisants.

J'ai même mis ma dll dans le GAC (pour le full trust).Et pareil, je ne
peux
toujours pas supprimer un élément de liste.
Qu'est-ce que j'aurais oublié ?

Ci-dessous une partie du code :
**********************************************************
//Impersonation
// La fonction CreateIdentity est une fonction qui crée le WindowsIdentity
admin
System.Security.Principal.WindowsImpersonationContext wic > CreateIdentity(strUser, strDomain, strPwd).Impersonate();
SPListItemCollection listItems = MaListeSPS.Items;
int itemCount = listItems.Count;
for (int i=0; i<itemCount; i++)
{
SPListItem item = listItems[i];
if (MaCondition == true)
{
listItems.Delete(i); // ---> Plantage
break;
}
}
wic.Undo();
*******************************************
Je ne sais pas ce que je peux faire de plus.Merci.


Avatar
Patrick
En effet ! Merci beaucoup pour cette info...C'est cool, ça marche ;)

"Stephane CORDONNIER [MVP]" a écrit :

Il faut faire l'impersonation avant de récupérer l'objet SPSite car après
c'est trop tard et les autres classes du modèle objet récupèrent les mêmes
credentials que ceux qu'utilise cet objet SPSite.

--
Stephane CORDONNIER
Microsoft MVP - France
http://www.sharepoint-france.com


"Patrick" a écrit dans le message de
news:
> Bonjour,
>
> Je suis en train de coder une interface web (page aspx) qui permet aux
> utilisateurs d'archiver les éléments d'une liste Sharepoint dans un site
> WSS.
> Archiver ici, signifie copier l'élément dans une autre liste SharePoint et
> supprimer l'item de la liste SharePoint d'origine. Pour cela, j'utilise
> l'impersonisation.
> Malgé cela, mon code (C#) ne fonctionne que lorsque je suis connecté en
> tant
> qu'administrateur SPS.
> Quand je me connecte avec un compte autre qu'administrateur, à la fonction
> MesItems.Delete(MonitemIndex), je reçois un message d'erreur qui me dit
> que
> je n'ai pas les droits suffisants.
>
> J'ai même mis ma dll dans le GAC (pour le full trust).Et pareil, je ne
> peux
> toujours pas supprimer un élément de liste.
> Qu'est-ce que j'aurais oublié ?
>
> Ci-dessous une partie du code :
> **********************************************************
> //Impersonation
> // La fonction CreateIdentity est une fonction qui crée le WindowsIdentity
> admin
> System.Security.Principal.WindowsImpersonationContext wic > > CreateIdentity(strUser, strDomain, strPwd).Impersonate();
> SPListItemCollection listItems = MaListeSPS.Items;
> int itemCount = listItems.Count;
> for (int i=0; i<itemCount; i++)
> {
> SPListItem item = listItems[i];
> if (MaCondition == true)
> {
> listItems.Delete(i); // ---> Plantage
> break;
> }
> }
> wic.Undo();
> *******************************************
> Je ne sais pas ce que je peux faire de plus.Merci.