[WSS2003] Delete et SPListItem et problème de droits
2 réponses
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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
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" <Patrick@discussions.microsoft.com> a écrit dans le message de
news: F96F8A49-D0CB-48BB-863F-8CF8983E5D16@microsoft.com...
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.
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.
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.
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" <Patrick@discussions.microsoft.com> a écrit dans le message de
news: F96F8A49-D0CB-48BB-863F-8CF8983E5D16@microsoft.com...
> 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.
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.