j'ai créé un gestionnaire d'événement pour une bibliothèque SPS et j'ai
toujours la même erreur au moment de faire un copyTo.
Pourtant, j'ai tracé tout le code et il m'a l'air bon. Y a t-il une
protection d'accès pendant l'execution du gestionnaire ou autre chose sachant
que je suis admin du domainde ?
Je suis avec SPS sp2 et WSS v2 et mon code est en .net v2.
Je vous colle mon code au cas ou il y aurait une erreur
public void OnEvent(SPListEvent theEvent)
{
//On ecrit le nom de la bibliothèque
EventLog.WriteEntry("EventSPS", "theEvent.Site.Url : " + theEvent.Site.Url);
//On récupère le SPWEB du site qui heberge la bibliothèque
SPWeb siteWeb = theEvent.Site.OpenWeb();
//On regarde quel evenement est généré
switch (theEvent.Type)
{
case SPListEventType.Update:
//L'evenement est de type update
EventLog.WriteEntry("Evenement SPS", "L'evenement est de type update");
//On récupère l'url du fichier
string originalUrl = theEvent.UrlAfter;
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
Renaud Comte
J'ai fait quelqus recherche mais je ne vois pas trop non plus
Peut être http://www.sharepointblogs.com/ssa/archive/2006/05/04/6278.aspx
Voila voila
Renaud Comte [MVP] -------------------------------------- http://blogs.developpeur.org/themit/ http://blog.spsclerics.com/
Bonjour,
j'ai créé un gestionnaire d'événement pour une bibliothèque SPS et j'ai toujours la même erreur au moment de faire un copyTo. Pourtant, j'ai tracé tout le code et il m'a l'air bon. Y a t-il une protection d'accès pendant l'execution du gestionnaire ou autre chose sachant que je suis admin du domainde ? Je suis avec SPS sp2 et WSS v2 et mon code est en .net v2.
Je vous colle mon code au cas ou il y aurait une erreur
public void OnEvent(SPListEvent theEvent) { //On ecrit le nom de la bibliothèque EventLog.WriteEntry("EventSPS", "theEvent.Site.Url : " + theEvent.Site.Url); //On récupère le SPWEB du site qui heberge la bibliothèque SPWeb siteWeb = theEvent.Site.OpenWeb();
//On regarde quel evenement est généré switch (theEvent.Type) { case SPListEventType.Update:
//L'evenement est de type update EventLog.WriteEntry("Evenement SPS", "L'evenement est de type update"); //On récupère l'url du fichier string originalUrl = theEvent.UrlAfter; EventLog.WriteEntry("Evenement SPS", "theEvent.UrlAfter : " + theEvent.UrlAfter);
//On ecrit l'utilisateur en cours (je trouve bien mon login admin) EventLog.WriteEntry("Evenement SPS", "UserLoginName : " + theEvent.UserLoginName); //On récupère le fichier SPFile fichierAvant > siteWeb.GetFile(originalUrl);
//On tente de copier le fichier (sachant que même try catch n'empeche pas l'exeption) fichierAvant.CopyTo(nouvelleUrl); break;
}
}
J'ai fait quelqus recherche mais je ne vois pas trop non plus
Peut être
http://www.sharepointblogs.com/ssa/archive/2006/05/04/6278.aspx
Voila voila
Renaud Comte [MVP]
--------------------------------------
http://blogs.developpeur.org/themit/
http://blog.spsclerics.com/
Bonjour,
j'ai créé un gestionnaire d'événement pour une bibliothèque SPS et
j'ai toujours la même erreur au moment de faire un copyTo. Pourtant,
j'ai tracé tout le code et il m'a l'air bon. Y a t-il une protection
d'accès pendant l'execution du gestionnaire ou autre chose sachant que
je suis admin du domainde ? Je suis avec SPS sp2 et WSS v2 et mon code
est en .net v2.
Je vous colle mon code au cas ou il y aurait une erreur
public void OnEvent(SPListEvent theEvent)
{
//On ecrit le nom de la bibliothèque
EventLog.WriteEntry("EventSPS", "theEvent.Site.Url : " +
theEvent.Site.Url);
//On récupère le SPWEB du site qui heberge la bibliothèque SPWeb
siteWeb = theEvent.Site.OpenWeb();
//On regarde quel evenement est généré
switch (theEvent.Type)
{
case SPListEventType.Update:
//L'evenement est de type update
EventLog.WriteEntry("Evenement SPS", "L'evenement est de type
update");
//On récupère l'url du fichier
string originalUrl = theEvent.UrlAfter;
EventLog.WriteEntry("Evenement SPS", "theEvent.UrlAfter : " +
theEvent.UrlAfter);
//On ecrit l'utilisateur en cours (je trouve bien mon login admin)
EventLog.WriteEntry("Evenement SPS", "UserLoginName : " +
theEvent.UserLoginName);
//On récupère le fichier SPFile fichierAvant > siteWeb.GetFile(originalUrl);
J'ai fait quelqus recherche mais je ne vois pas trop non plus
Peut être http://www.sharepointblogs.com/ssa/archive/2006/05/04/6278.aspx
Voila voila
Renaud Comte [MVP] -------------------------------------- http://blogs.developpeur.org/themit/ http://blog.spsclerics.com/
Bonjour,
j'ai créé un gestionnaire d'événement pour une bibliothèque SPS et j'ai toujours la même erreur au moment de faire un copyTo. Pourtant, j'ai tracé tout le code et il m'a l'air bon. Y a t-il une protection d'accès pendant l'execution du gestionnaire ou autre chose sachant que je suis admin du domainde ? Je suis avec SPS sp2 et WSS v2 et mon code est en .net v2.
Je vous colle mon code au cas ou il y aurait une erreur
public void OnEvent(SPListEvent theEvent) { //On ecrit le nom de la bibliothèque EventLog.WriteEntry("EventSPS", "theEvent.Site.Url : " + theEvent.Site.Url); //On récupère le SPWEB du site qui heberge la bibliothèque SPWeb siteWeb = theEvent.Site.OpenWeb();
//On regarde quel evenement est généré switch (theEvent.Type) { case SPListEventType.Update:
//L'evenement est de type update EventLog.WriteEntry("Evenement SPS", "L'evenement est de type update"); //On récupère l'url du fichier string originalUrl = theEvent.UrlAfter; EventLog.WriteEntry("Evenement SPS", "theEvent.UrlAfter : " + theEvent.UrlAfter);
//On ecrit l'utilisateur en cours (je trouve bien mon login admin) EventLog.WriteEntry("Evenement SPS", "UserLoginName : " + theEvent.UserLoginName); //On récupère le fichier SPFile fichierAvant > siteWeb.GetFile(originalUrl);
//On tente de copier le fichier (sachant que même try catch n'empeche pas l'exeption) fichierAvant.CopyTo(nouvelleUrl); break;
}
}
dref
Bonjour,
J'ai eu le même pb, pour pouvoir faire la copie, je suis obligé de faire, avant la copie:
- une impersonation dans le code (sur le compte admin) cf http://support.microsoft.com/kb/306158/ - fixer la propriété AllowUnsafeUpdates de l'objet SPWeb à true
En espérant que cela vous aide...
"Alex" a écrit :
Bonjour,
j'ai créé un gestionnaire d'événement pour une bibliothèque SPS et j'ai toujours la même erreur au moment de faire un copyTo. Pourtant, j'ai tracé tout le code et il m'a l'air bon. Y a t-il une protection d'accès pendant l'execution du gestionnaire ou autre chose sachant que je suis admin du domainde ? Je suis avec SPS sp2 et WSS v2 et mon code est en .net v2.
Je vous colle mon code au cas ou il y aurait une erreur
public void OnEvent(SPListEvent theEvent) {
//On ecrit le nom de la bibliothèque EventLog.WriteEntry("EventSPS", "theEvent.Site.Url : " + theEvent.Site.Url);
//On récupère le SPWEB du site qui heberge la bibliothèque SPWeb siteWeb = theEvent.Site.OpenWeb();
//On regarde quel evenement est généré switch (theEvent.Type) {
case SPListEventType.Update:
//L'evenement est de type update EventLog.WriteEntry("Evenement SPS", "L'evenement est de type update");
//On récupère l'url du fichier string originalUrl = theEvent.UrlAfter;
//On tente de copier le fichier (sachant que même try catch n'empeche pas l'exeption) fichierAvant.CopyTo(nouvelleUrl);
break;
}
}
Bonjour,
J'ai eu le même pb, pour pouvoir faire la copie, je suis obligé de faire,
avant la copie:
- une impersonation dans le code (sur le compte admin) cf
http://support.microsoft.com/kb/306158/
- fixer la propriété AllowUnsafeUpdates de l'objet SPWeb à true
En espérant que cela vous aide...
"Alex" a écrit :
Bonjour,
j'ai créé un gestionnaire d'événement pour une bibliothèque SPS et j'ai
toujours la même erreur au moment de faire un copyTo.
Pourtant, j'ai tracé tout le code et il m'a l'air bon. Y a t-il une
protection d'accès pendant l'execution du gestionnaire ou autre chose sachant
que je suis admin du domainde ?
Je suis avec SPS sp2 et WSS v2 et mon code est en .net v2.
Je vous colle mon code au cas ou il y aurait une erreur
public void OnEvent(SPListEvent theEvent)
{
//On ecrit le nom de la bibliothèque
EventLog.WriteEntry("EventSPS", "theEvent.Site.Url : " + theEvent.Site.Url);
//On récupère le SPWEB du site qui heberge la bibliothèque
SPWeb siteWeb = theEvent.Site.OpenWeb();
//On regarde quel evenement est généré
switch (theEvent.Type)
{
case SPListEventType.Update:
//L'evenement est de type update
EventLog.WriteEntry("Evenement SPS", "L'evenement est de type update");
//On récupère l'url du fichier
string originalUrl = theEvent.UrlAfter;
J'ai eu le même pb, pour pouvoir faire la copie, je suis obligé de faire, avant la copie:
- une impersonation dans le code (sur le compte admin) cf http://support.microsoft.com/kb/306158/ - fixer la propriété AllowUnsafeUpdates de l'objet SPWeb à true
En espérant que cela vous aide...
"Alex" a écrit :
Bonjour,
j'ai créé un gestionnaire d'événement pour une bibliothèque SPS et j'ai toujours la même erreur au moment de faire un copyTo. Pourtant, j'ai tracé tout le code et il m'a l'air bon. Y a t-il une protection d'accès pendant l'execution du gestionnaire ou autre chose sachant que je suis admin du domainde ? Je suis avec SPS sp2 et WSS v2 et mon code est en .net v2.
Je vous colle mon code au cas ou il y aurait une erreur
public void OnEvent(SPListEvent theEvent) {
//On ecrit le nom de la bibliothèque EventLog.WriteEntry("EventSPS", "theEvent.Site.Url : " + theEvent.Site.Url);
//On récupère le SPWEB du site qui heberge la bibliothèque SPWeb siteWeb = theEvent.Site.OpenWeb();
//On regarde quel evenement est généré switch (theEvent.Type) {
case SPListEventType.Update:
//L'evenement est de type update EventLog.WriteEntry("Evenement SPS", "L'evenement est de type update");
//On récupère l'url du fichier string originalUrl = theEvent.UrlAfter;
//On tente de copier le fichier (sachant que même try catch n'empeche pas l'exeption) fichierAvant.CopyTo(nouvelleUrl);
break;
}
}
Alex
Merci à vous deux, je teste ça
Merci
"dref" a écrit :
Bonjour,
J'ai eu le même pb, pour pouvoir faire la copie, je suis obligé de faire, avant la copie:
- une impersonation dans le code (sur le compte admin) cf http://support.microsoft.com/kb/306158/ - fixer la propriété AllowUnsafeUpdates de l'objet SPWeb à true
En espérant que cela vous aide...
"Alex" a écrit :
> Bonjour, > > j'ai créé un gestionnaire d'événement pour une bibliothèque SPS et j'ai > toujours la même erreur au moment de faire un copyTo. > Pourtant, j'ai tracé tout le code et il m'a l'air bon. Y a t-il une > protection d'accès pendant l'execution du gestionnaire ou autre chose sachant > que je suis admin du domainde ? > Je suis avec SPS sp2 et WSS v2 et mon code est en .net v2. > > Je vous colle mon code au cas ou il y aurait une erreur > > public void OnEvent(SPListEvent theEvent) > { > > //On ecrit le nom de la bibliothèque > EventLog.WriteEntry("EventSPS", "theEvent.Site.Url : " + theEvent.Site.Url); > > //On récupère le SPWEB du site qui heberge la bibliothèque > SPWeb siteWeb = theEvent.Site.OpenWeb(); > > //On regarde quel evenement est généré > switch (theEvent.Type) > { > > case SPListEventType.Update: > > //L'evenement est de type update > EventLog.WriteEntry("Evenement SPS", "L'evenement est de type update"); > > //On récupère l'url du fichier > string originalUrl = theEvent.UrlAfter; > > EventLog.WriteEntry("Evenement SPS", "theEvent.UrlAfter : " + > theEvent.UrlAfter); > > //On ecrit l'utilisateur en cours (je trouve bien mon login admin) > EventLog.WriteEntry("Evenement SPS", "UserLoginName : " + > theEvent.UserLoginName); > > //On récupère le fichier > SPFile fichierAvant = siteWeb.GetFile(originalUrl); > > //On remet l'url complete > originalUrl = fichierAvant.Url; > > EventLog.WriteEntry("Evenement SPS", "fichierAvant.Url : " + originalUrl); > > //On récupère l'index du point > int point = originalUrl.LastIndexOf(".") ; > > EventLog.WriteEntry("Evenement SPS", "point : " + point.ToString() ); > > //On récupère l'extension du fichier > string extension = originalUrl.Substring(point); > > EventLog.WriteEntry("Evenement SPS", "extension : " + extension); > > //On récupère l'url sans l'extension > string urlSansExt = originalUrl.Remove(point); > > EventLog.WriteEntry("Evenement SPS", "urlSansExt : " + urlSansExt); > > //On créer la nouvelle adresse (je modifie juste le nom du fichier) > string nouvelleUrl = urlSansExt + "-666" + extension; > > EventLog.WriteEntry("Evenement SPS", "nouvelleUrl : " + nouvelleUrl); > > //On tente de copier le fichier (sachant que même try catch n'empeche pas > l'exeption) > fichierAvant.CopyTo(nouvelleUrl); > > break; > > > } > > } >
Merci à vous deux, je teste ça
Merci
"dref" a écrit :
Bonjour,
J'ai eu le même pb, pour pouvoir faire la copie, je suis obligé de faire,
avant la copie:
- une impersonation dans le code (sur le compte admin) cf
http://support.microsoft.com/kb/306158/
- fixer la propriété AllowUnsafeUpdates de l'objet SPWeb à true
En espérant que cela vous aide...
"Alex" a écrit :
> Bonjour,
>
> j'ai créé un gestionnaire d'événement pour une bibliothèque SPS et j'ai
> toujours la même erreur au moment de faire un copyTo.
> Pourtant, j'ai tracé tout le code et il m'a l'air bon. Y a t-il une
> protection d'accès pendant l'execution du gestionnaire ou autre chose sachant
> que je suis admin du domainde ?
> Je suis avec SPS sp2 et WSS v2 et mon code est en .net v2.
>
> Je vous colle mon code au cas ou il y aurait une erreur
>
> public void OnEvent(SPListEvent theEvent)
> {
>
> //On ecrit le nom de la bibliothèque
> EventLog.WriteEntry("EventSPS", "theEvent.Site.Url : " + theEvent.Site.Url);
>
> //On récupère le SPWEB du site qui heberge la bibliothèque
> SPWeb siteWeb = theEvent.Site.OpenWeb();
>
> //On regarde quel evenement est généré
> switch (theEvent.Type)
> {
>
> case SPListEventType.Update:
>
> //L'evenement est de type update
> EventLog.WriteEntry("Evenement SPS", "L'evenement est de type update");
>
> //On récupère l'url du fichier
> string originalUrl = theEvent.UrlAfter;
>
> EventLog.WriteEntry("Evenement SPS", "theEvent.UrlAfter : " +
> theEvent.UrlAfter);
>
> //On ecrit l'utilisateur en cours (je trouve bien mon login admin)
> EventLog.WriteEntry("Evenement SPS", "UserLoginName : " +
> theEvent.UserLoginName);
>
> //On récupère le fichier
> SPFile fichierAvant = siteWeb.GetFile(originalUrl);
>
> //On remet l'url complete
> originalUrl = fichierAvant.Url;
>
> EventLog.WriteEntry("Evenement SPS", "fichierAvant.Url : " + originalUrl);
>
> //On récupère l'index du point
> int point = originalUrl.LastIndexOf(".") ;
>
> EventLog.WriteEntry("Evenement SPS", "point : " + point.ToString() );
>
> //On récupère l'extension du fichier
> string extension = originalUrl.Substring(point);
>
> EventLog.WriteEntry("Evenement SPS", "extension : " + extension);
>
> //On récupère l'url sans l'extension
> string urlSansExt = originalUrl.Remove(point);
>
> EventLog.WriteEntry("Evenement SPS", "urlSansExt : " + urlSansExt);
>
> //On créer la nouvelle adresse (je modifie juste le nom du fichier)
> string nouvelleUrl = urlSansExt + "-666" + extension;
>
> EventLog.WriteEntry("Evenement SPS", "nouvelleUrl : " + nouvelleUrl);
>
> //On tente de copier le fichier (sachant que même try catch n'empeche pas
> l'exeption)
> fichierAvant.CopyTo(nouvelleUrl);
>
> break;
>
>
> }
>
> }
>
J'ai eu le même pb, pour pouvoir faire la copie, je suis obligé de faire, avant la copie:
- une impersonation dans le code (sur le compte admin) cf http://support.microsoft.com/kb/306158/ - fixer la propriété AllowUnsafeUpdates de l'objet SPWeb à true
En espérant que cela vous aide...
"Alex" a écrit :
> Bonjour, > > j'ai créé un gestionnaire d'événement pour une bibliothèque SPS et j'ai > toujours la même erreur au moment de faire un copyTo. > Pourtant, j'ai tracé tout le code et il m'a l'air bon. Y a t-il une > protection d'accès pendant l'execution du gestionnaire ou autre chose sachant > que je suis admin du domainde ? > Je suis avec SPS sp2 et WSS v2 et mon code est en .net v2. > > Je vous colle mon code au cas ou il y aurait une erreur > > public void OnEvent(SPListEvent theEvent) > { > > //On ecrit le nom de la bibliothèque > EventLog.WriteEntry("EventSPS", "theEvent.Site.Url : " + theEvent.Site.Url); > > //On récupère le SPWEB du site qui heberge la bibliothèque > SPWeb siteWeb = theEvent.Site.OpenWeb(); > > //On regarde quel evenement est généré > switch (theEvent.Type) > { > > case SPListEventType.Update: > > //L'evenement est de type update > EventLog.WriteEntry("Evenement SPS", "L'evenement est de type update"); > > //On récupère l'url du fichier > string originalUrl = theEvent.UrlAfter; > > EventLog.WriteEntry("Evenement SPS", "theEvent.UrlAfter : " + > theEvent.UrlAfter); > > //On ecrit l'utilisateur en cours (je trouve bien mon login admin) > EventLog.WriteEntry("Evenement SPS", "UserLoginName : " + > theEvent.UserLoginName); > > //On récupère le fichier > SPFile fichierAvant = siteWeb.GetFile(originalUrl); > > //On remet l'url complete > originalUrl = fichierAvant.Url; > > EventLog.WriteEntry("Evenement SPS", "fichierAvant.Url : " + originalUrl); > > //On récupère l'index du point > int point = originalUrl.LastIndexOf(".") ; > > EventLog.WriteEntry("Evenement SPS", "point : " + point.ToString() ); > > //On récupère l'extension du fichier > string extension = originalUrl.Substring(point); > > EventLog.WriteEntry("Evenement SPS", "extension : " + extension); > > //On récupère l'url sans l'extension > string urlSansExt = originalUrl.Remove(point); > > EventLog.WriteEntry("Evenement SPS", "urlSansExt : " + urlSansExt); > > //On créer la nouvelle adresse (je modifie juste le nom du fichier) > string nouvelleUrl = urlSansExt + "-666" + extension; > > EventLog.WriteEntry("Evenement SPS", "nouvelleUrl : " + nouvelleUrl); > > //On tente de copier le fichier (sachant que même try catch n'empeche pas > l'exeption) > fichierAvant.CopyTo(nouvelleUrl); > > break; > > > } > > } >
Alex
Et voilà,
Ca marche grâce à vous, merci.
Il faut effectivement faire une impersonation pour que le code puisse s'executer correctement.
En fait, lors de mes recherches, il me semblait avoir vu un article comme quoi le SP2 de WSS, obligait de faire une impersonation (ce que j'avais fait) pour que le code marche. Mais comme d'habitude, j'ai du me tromper lors de l'ecriture de celle-ci (je n'ai pas l'habitude des impersonations. Mais bon maintenant ça marche
Merci encore pour votre aide
PS : Voici le code corrigé et qui marche
> > public void OnEvent(SPListEvent theEvent) > > { > > > > //On ecrit le nom de la bibliothèque > > EventLog.WriteEntry("EventSPS", "theEvent.Site.Url : " + theEvent.Site.Url); > > > > > > //On fait une impersonation avec l'utilisateur actuel (SP2 oblige) > > WindowsImpersonationContext wic = WindowsIdentity.GetCurrent > > ().Impersonate(); > > > > //On récupère le SPWEB du site qui heberge la bibliothèque > > SPWeb siteWeb = theEvent.Site.OpenWeb(); > > > > //On regarde quel evenement est généré > > switch (theEvent.Type) > > { > > > > case SPListEventType.Update: > > > > //L'evenement est de type update > > EventLog.WriteEntry("Evenement SPS", "L'evenement est de type update"); > > > > //On récupère l'url du fichier > > string originalUrl = theEvent.UrlAfter; > > > > EventLog.WriteEntry("Evenement SPS", "theEvent.UrlAfter : " + > > theEvent.UrlAfter); > > > > //On ecrit l'utilisateur en cours (je trouve bien mon login admin) > > EventLog.WriteEntry("Evenement SPS", "UserLoginName : " + > > theEvent.UserLoginName); > > > > //On récupère le fichier > > SPFile fichierAvant = siteWeb.GetFile(originalUrl); > > > > //On remet l'url complete > > originalUrl = fichierAvant.Url; > > > > EventLog.WriteEntry("Evenement SPS", "fichierAvant.Url : " + originalUrl); > > > > //On récupère l'index du point > > int point = originalUrl.LastIndexOf(".") ; > > > > EventLog.WriteEntry("Evenement SPS", "point : " + point.ToString() ); > > > > //On récupère l'extension du fichier > > string extension = originalUrl.Substring(point); > > > > EventLog.WriteEntry("Evenement SPS", "extension : " + extension); > > > > //On récupère l'url sans l'extension > > string urlSansExt = originalUrl.Remove(point); > > > > EventLog.WriteEntry("Evenement SPS", "urlSansExt : " + urlSansExt); > > > > //On créer la nouvelle adresse (je modifie juste le nom du fichier) > > string nouvelleUrl = urlSansExt + "-666" + extension; > > > > EventLog.WriteEntry("Evenement SPS", "nouvelleUrl : " + nouvelleUrl); > > > > //On tente de copier le fichier (sachant que même try catch n'empeche pas > > l'exeption) > > fichierAvant.CopyTo(nouvelleUrl); > > > > break; > > > > > > } > > > > //On arrete l'impersonation > > wic.Undo(); > > > > } > >
Et voilà,
Ca marche grâce à vous, merci.
Il faut effectivement faire une impersonation pour que le code puisse
s'executer correctement.
En fait, lors de mes recherches, il me semblait avoir vu un article comme
quoi le SP2 de WSS, obligait de faire une impersonation (ce que j'avais fait)
pour que le code marche.
Mais comme d'habitude, j'ai du me tromper lors de l'ecriture de celle-ci (je
n'ai pas l'habitude des impersonations. Mais bon maintenant ça marche
Merci encore pour votre aide
PS : Voici le code corrigé et qui marche
> > public void OnEvent(SPListEvent theEvent)
> > {
> >
> > //On ecrit le nom de la bibliothèque
> > EventLog.WriteEntry("EventSPS", "theEvent.Site.Url : " + theEvent.Site.Url);
> >
> >
> > //On fait une impersonation avec l'utilisateur actuel (SP2 oblige)
> > WindowsImpersonationContext wic = WindowsIdentity.GetCurrent
> > ().Impersonate();
> >
> > //On récupère le SPWEB du site qui heberge la bibliothèque
> > SPWeb siteWeb = theEvent.Site.OpenWeb();
> >
> > //On regarde quel evenement est généré
> > switch (theEvent.Type)
> > {
> >
> > case SPListEventType.Update:
> >
> > //L'evenement est de type update
> > EventLog.WriteEntry("Evenement SPS", "L'evenement est de type update");
> >
> > //On récupère l'url du fichier
> > string originalUrl = theEvent.UrlAfter;
> >
> > EventLog.WriteEntry("Evenement SPS", "theEvent.UrlAfter : " +
> > theEvent.UrlAfter);
> >
> > //On ecrit l'utilisateur en cours (je trouve bien mon login admin)
> > EventLog.WriteEntry("Evenement SPS", "UserLoginName : " +
> > theEvent.UserLoginName);
> >
> > //On récupère le fichier
> > SPFile fichierAvant = siteWeb.GetFile(originalUrl);
> >
> > //On remet l'url complete
> > originalUrl = fichierAvant.Url;
> >
> > EventLog.WriteEntry("Evenement SPS", "fichierAvant.Url : " + originalUrl);
> >
> > //On récupère l'index du point
> > int point = originalUrl.LastIndexOf(".") ;
> >
> > EventLog.WriteEntry("Evenement SPS", "point : " + point.ToString() );
> >
> > //On récupère l'extension du fichier
> > string extension = originalUrl.Substring(point);
> >
> > EventLog.WriteEntry("Evenement SPS", "extension : " + extension);
> >
> > //On récupère l'url sans l'extension
> > string urlSansExt = originalUrl.Remove(point);
> >
> > EventLog.WriteEntry("Evenement SPS", "urlSansExt : " + urlSansExt);
> >
> > //On créer la nouvelle adresse (je modifie juste le nom du fichier)
> > string nouvelleUrl = urlSansExt + "-666" + extension;
> >
> > EventLog.WriteEntry("Evenement SPS", "nouvelleUrl : " + nouvelleUrl);
> >
> > //On tente de copier le fichier (sachant que même try catch n'empeche pas
> > l'exeption)
> > fichierAvant.CopyTo(nouvelleUrl);
> >
> > break;
> >
> >
> > }
> >
> > //On arrete l'impersonation
> > wic.Undo();
> >
> > }
> >
Il faut effectivement faire une impersonation pour que le code puisse s'executer correctement.
En fait, lors de mes recherches, il me semblait avoir vu un article comme quoi le SP2 de WSS, obligait de faire une impersonation (ce que j'avais fait) pour que le code marche. Mais comme d'habitude, j'ai du me tromper lors de l'ecriture de celle-ci (je n'ai pas l'habitude des impersonations. Mais bon maintenant ça marche
Merci encore pour votre aide
PS : Voici le code corrigé et qui marche
> > public void OnEvent(SPListEvent theEvent) > > { > > > > //On ecrit le nom de la bibliothèque > > EventLog.WriteEntry("EventSPS", "theEvent.Site.Url : " + theEvent.Site.Url); > > > > > > //On fait une impersonation avec l'utilisateur actuel (SP2 oblige) > > WindowsImpersonationContext wic = WindowsIdentity.GetCurrent > > ().Impersonate(); > > > > //On récupère le SPWEB du site qui heberge la bibliothèque > > SPWeb siteWeb = theEvent.Site.OpenWeb(); > > > > //On regarde quel evenement est généré > > switch (theEvent.Type) > > { > > > > case SPListEventType.Update: > > > > //L'evenement est de type update > > EventLog.WriteEntry("Evenement SPS", "L'evenement est de type update"); > > > > //On récupère l'url du fichier > > string originalUrl = theEvent.UrlAfter; > > > > EventLog.WriteEntry("Evenement SPS", "theEvent.UrlAfter : " + > > theEvent.UrlAfter); > > > > //On ecrit l'utilisateur en cours (je trouve bien mon login admin) > > EventLog.WriteEntry("Evenement SPS", "UserLoginName : " + > > theEvent.UserLoginName); > > > > //On récupère le fichier > > SPFile fichierAvant = siteWeb.GetFile(originalUrl); > > > > //On remet l'url complete > > originalUrl = fichierAvant.Url; > > > > EventLog.WriteEntry("Evenement SPS", "fichierAvant.Url : " + originalUrl); > > > > //On récupère l'index du point > > int point = originalUrl.LastIndexOf(".") ; > > > > EventLog.WriteEntry("Evenement SPS", "point : " + point.ToString() ); > > > > //On récupère l'extension du fichier > > string extension = originalUrl.Substring(point); > > > > EventLog.WriteEntry("Evenement SPS", "extension : " + extension); > > > > //On récupère l'url sans l'extension > > string urlSansExt = originalUrl.Remove(point); > > > > EventLog.WriteEntry("Evenement SPS", "urlSansExt : " + urlSansExt); > > > > //On créer la nouvelle adresse (je modifie juste le nom du fichier) > > string nouvelleUrl = urlSansExt + "-666" + extension; > > > > EventLog.WriteEntry("Evenement SPS", "nouvelleUrl : " + nouvelleUrl); > > > > //On tente de copier le fichier (sachant que même try catch n'empeche pas > > l'exeption) > > fichierAvant.CopyTo(nouvelleUrl); > > > > break; > > > > > > } > > > > //On arrete l'impersonation > > wic.Undo(); > > > > } > >