IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Sharepoint .NET Discussion :

Event Handler ==> Cannot complete this action


Sujet :

Développement Sharepoint .NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 42
    Points : 18
    Points
    18
    Par défaut Event Handler ==> Cannot complete this action
    Bonjour,

    J'ai développé deux Event Handler, un sur une liste et l'autre sur une bibliothèque. Ce sont des EH de types "ItemDeleting". Le fonctionnement global des deux EH est le suivant :

    Je récupère l'item supprimé, je modifie la valeur d'un champ, puis j'enleve tous les droits sur cet item. Enfin j'annule la suppression afin que l'item reste dans
    ma liste.
    Pour annuler la suppression je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    properties.cancel = true;
    properties.status = SPEventReceiverStatus.CancelNoError;
    Le code est exactement le même pour les deux EH, et il fonctionne, c'est à dire que la valeur du champ est modifié et les droits sur l'élément sont supprimés.

    Le problème se pose au niveau de la bibliothèque, à la fin de l'Event Handler, j'atteris sur une page d'erreur avec le message
    Cannot complete this action. Please try again.
    Je précise qu'aucune exception n'est levé durant l'Event Handler, et qu'il fonctionne parfaitement sur la liste.

    Quelqu'un a une idée ?

  2. #2
    Expert confirmé Avatar de Lapinpanda
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 230
    Points : 4 913
    Points
    4 913
    Par défaut
    properties.status = SPEventReceiverStatus.CancelNoError;
    Est ce que cette property force sharepoint à ne pas remonter une quelconque exception?
    Merci d'utiliser en cas de résolution de votre problème

    N'oubliez pas non plus le petit pouce vert pour récompenser celui que vous a aidé

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 42
    Points : 18
    Points
    18
    Par défaut
    Je ne pense pas, d'autant que cette même propriété dans le cas d'une liste ne génère pas d'erreur.
    Comment puis je voir si cette propriété génère une exception, sachant que dans mon code aucune exception n'est levé.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 127
    Points : 174
    Points
    174
    Par défaut
    Cette erreur peut apparaitre quand un utilisateur n'a pas les droits d'accéder à un élément ou une page d'un élément...
    Le problème se pose au niveau de la bibliothèque, à la fin de l'Event Handler, j'atteris sur une page d'erreur avec le message
    Quelle est l'url de cette page ? En supprimant les droits sur l'item, n'as-tu pas coupé la branche sur laquelle tu étais ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 42
    Points : 18
    Points
    18
    Par défaut
    Effectivement je supprime tous les droits sur l'éléments mais je suis propriétaire du site. Et je ne touche pas au droits de la bibliothèque donc j'y ai toujours accès

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 127
    Points : 174
    Points
    174
    Par défaut
    Mon idée était que l'EH s'exécute alors que tu es sur la page des propriétés, or sans les droits tu n'y as pas accès. Comment effectues-tu la suppression par l'affichage des propriétés de l'élément ? ou par le menu déroulant de l'élément dans ta liste ?

    As-tu regardé dans les logs de SharePoint ?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 42
    Points : 18
    Points
    18
    Par défaut
    J'effectue ma suppression à partir du menu déroulant de l'élément.

    Pour les logs, je les ai regardé mais je ne trouve rien d'interessant (ou alors je ne regarde pas bien)

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 127
    Points : 174
    Points
    174
    Par défaut
    Tu ne trouves rien dans le journal d'évènements non plus ?
    Pourrais-tu poster ton code, du moins la suppression des droits ?
    Utilises-tu l'impersonnalisation ?

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 42
    Points : 18
    Points
    18
    Par défaut
    Je ne trouve rien, ni dans le gestionnaire d'évenement ni dans les logs. Mon code est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    SPSecurity.RunWithElevatedPrivileges(delegate() 
                    {
                        using (SPSite site = new SPSite(monSite))
                        {
                            using (SPWeb web = site.OpenWeb())
                            {
     
                                SPListItem itemASuppr = web.GetListItem(item.Url);
                                web.AllowUnsafeUpdates = true;
                                itemASuppr.BreakRoleInheritance(true);
     
     
                                if (itemASuppr.RoleAssignments.Count > 0)
                                {
                                    /// clear assignments
                                    do
                                    {
                                        itemASuppr.RoleAssignments.Remove(0);
                                    } while (itemASuppr.RoleAssignments.Count > 0);
                                }
                                web.AllowUnsafeUpdates = false;
     
                            }
                        }
                    });

  10. #10
    Expert confirmé Avatar de Lapinpanda
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 230
    Points : 4 913
    Points
    4 913
    Par défaut
    Tu ne fais pas de .Update() dans ton code?


    Malgrès tout, si tu n'a pas d'erreur rémonté, je ne vois pas ce que ton code fait de mal.
    Il faut plutot trouver ce qu'il ne fait pas.

    edit : relecture
    Merci d'utiliser en cas de résolution de votre problème

    N'oubliez pas non plus le petit pouce vert pour récompenser celui que vous a aidé

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 42
    Points : 18
    Points
    18
    Par défaut
    Je fais un update plus haut dans mon code lorsque je modifie les propriétés de l'item.
    Non, il n'y a aucune erreur remonté par mon code.
    En plus, la suppression des droits fonctionne puisque lorsque je retourne sur les droits de l'item je vois qu'il n'en a plus aucun.

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 127
    Points : 174
    Points
    174
    Par défaut
    Dans ce cas, Lapinpanda a sûrement raison, il me semble qu'il faille effectuer un tonItem.Update() après la modification d'autorisations sur un item.

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 42
    Points : 18
    Points
    18
    Par défaut
    J'ai rajouté un update sur mon item mais j'ai toujours la même erreur

  14. #14
    Expert confirmé Avatar de Lapinpanda
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 230
    Points : 4 913
    Points
    4 913
    Par défaut
    Cannot complete this action. Please try again.
    Est ce que tu as modifié le web.config pour avoir le mode debug qui t'affiche le stacktrace?
    Merci d'utiliser en cas de résolution de votre problème

    N'oubliez pas non plus le petit pouce vert pour récompenser celui que vous a aidé

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 42
    Points : 18
    Points
    18
    Par défaut
    Normalement je l'ai fait mais j'ai pas l'impression que cela change grand chose. Voici les lignes que j'ai modifié dans mon web.config :

    <SafeMode MaxControls="200" CallStack="True" DirectFileDependencies="10" TotalFileDependencies="50" AllowPageLevelTrace="false">

    <customErrors mode="Off" />

  16. #16
    Expert confirmé Avatar de Lapinpanda
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 230
    Points : 4 913
    Points
    4 913
    Merci d'utiliser en cas de résolution de votre problème

    N'oubliez pas non plus le petit pouce vert pour récompenser celui que vous a aidé

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 42
    Points : 18
    Points
    18
    Par défaut
    C'est exactement ce que j'ai fais

  18. #18
    Expert confirmé Avatar de Lapinpanda
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 230
    Points : 4 913
    Points
    4 913
    Par défaut
    Okay

    De toute façon, pour moi "Cannot complete this action" que se soit avec mode debug ou pas, je pense que c'est la même.


    EN dehors de la page d'erreur,tout le code métier implémenter fonctionne parfaitement c'est bien cela?

    Si oui, peux être pourquoi pas bidouiller la page de redirection, pour dépanner
    Merci d'utiliser en cas de résolution de votre problème

    N'oubliez pas non plus le petit pouce vert pour récompenser celui que vous a aidé

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 42
    Points : 18
    Points
    18
    Par défaut
    J'ai pensé à cette bidouille. Mais je n'arrive pas à rediriger.
    Dans tous les cas je vais sur la page d'erreur même si je fais un SPUtility.redirect().

    Il faut savoir que je suis dans un itemDeleting et que je suis obligé de recréer le HttpContext pour faire un SPUtility.redirect().

    Mais cela ne fonctionne pas non plus ...

Discussions similaires

  1. event handler et accès anonyme
    Par @melie dans le forum SharePoint
    Réponses: 5
    Dernier message: 25/08/2007, 19h17
  2. Réponses: 1
    Dernier message: 15/08/2007, 15h45
  3. Réponses: 6
    Dernier message: 25/10/2006, 11h22
  4. Birt Event Handler
    Par medbass dans le forum BIRT
    Réponses: 8
    Dernier message: 07/08/2006, 14h51
  5. Problème avec event handler
    Par MASSAKA dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 15/11/2005, 09h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo