Résolution des problèmes liés aux événements
Dernière modification : vendredi 9 avril 2010
S’applique à : SharePoint Foundation 2010
Dans cet article
Bibliothèques de documents et types de contenu
Listes et types de contenu
Bibliothèques de documents
Sites Web
La programmation d’événements peut provoquer des comportements exceptionnels, selon les contextes dans lesquels vous implémentez les gestionnaires d’événements. Les informations suivantes décrivent les comportements des événements liés à des contextes spécifiques que vous pouvez rencontrer lors de l’écriture de code.
Les comportements des événements sont classés en quatre catégories :
bibliothèques de documents et types de contenu ;
Listes et types de contenu ;
bibliothèques de documents ;
sites Web.
Bibliothèques de documents et types de contenu
PROBLÈME |
DESCRIPTION |
---|---|
PROBLÈME 1 |
Une page .aspx d’un type de contenu spécifique est créée dans une bibliothèque de documents. La page est associée à des événements ItemAdding et ItemAdded. Toutefois, ces événements ne sont pas déclenchés. Solution : lorsqu’un fichier est téléchargé vers une bibliothèque de documents, un type de contenu par défaut lui est affecté. Toutefois, si vous téléchargez un fichier, puis que vous lui affectez un type de contenu, par exemple, le type de contenu « A », vous remplacez le type de contenu par défaut du fichier par le type de contenu « A » une fois le fichier ajouté à la bibliothèque de documents. Dans ce scénario, lorsque le type de contenu « A » possède des liaisons d’événement avec ItemAdding/ItemAdded et ItemUpdating/ItemUpdated, les événements ItemAdding/ItemAdded ne sont pas déclenchés lorsque vous affectez le nouveau type de contenu « A » au fichier. Toutefois, les événements ItemUpdating/ItemUpdated sont déclenchés dans ce scénario. Lorsque vous créez le fichier directement à partir du type de contenu à l’aide de la fonctionnalité Nouveau document plutôt qu’en téléchargeant le document, les événements ItemAdding/ItemAdded sont correctement déclenchés, ainsi que l’événement ItemUpdating. |
PROBLÈME 2 |
Un événement ItemAdding lié à un type de contenu est déclenché même lorsqu’un document qui n’est pas de ce type de contenu est téléchargé. Notez que chaque document téléchargé vers une bibliothèque de documents est d’abord affecté au type de contenu par défaut. Par conséquent, chaque fois que vous ajoutez un document à une bibliothèque de documents, les événements ItemAdding\ItemAdded sont déclenchés s’ils sont liés au type de contenu par défaut. Solution : le type de contenu du document peut être modifié lors de la phase de mise à jour et l’identificateur (ID) du type de contenu est ajusté en conséquence. |
PROBLÈME 3 |
Une demande pour supprimer un élément via un formulaire de liste ne fournit pas d’ID de type de contenu associé. Par conséquent, les événements ItemDeleting et ItemDeleted sont déclenchés sur tous les éléments de liste et pas seulement sur les éléments d’un type de contenu spécifique. Cela se produit même si l’événement a été inscrit uniquement pour le type de contenu spécifié. Solution : de par sa conception, SharePoint Foundation déclenche des événements pour tous les éléments de liste lorsque la demande n’est pas liée à un type de contenu. Cela permet de déclencher un événement pour tous les éléments lorsque le récepteur d’événements est inscrit pour tous les éléments de la liste. Ce comportement affecte les stratégies qui impliquent des événements Delete. Si vous implémentez une stratégie qui implique la suppression, appliquez la stratégie à un type de contenu, puis liez le type de contenu à une liste : la stratégie s'appliquera à tous les éléments de la liste, et pas seulement aux éléments du type de contenu auquel la stratégie est appliquée. |
Listes et types de contenu
PROBLÈME |
DESCRIPTION |
---|---|
PROBLÈME 1 |
Lorsque vous inscrivez l’événement ItemUpdating sur un type de contenu qui est lié à une liste, l’événement se déclenche même lorsque les éléments qui ne sont pas de ce type de contenu sont mis à jour via le modèle objet. Notez que SharePoint Foundation retourne 0 (zéro) comme ID de type de contenu, et non l’ID de type de contenu de l’élément. Solution : aucune. |
PROBLÈME 2 |
Les événements de liste ne sont pas déclenchés sur le type de liste UserInformation. Solution : aucune. |
Bibliothèques de documents
PROBLÈME |
DESCRIPTION |
---|---|
PROBLÈME 1 |
Lors de l’ajout d’un nouveau type de contenu à une liste à laquelle sont liés des événements, certains de ces événements risquent d’être déclenchés, car la liaison d’un type de contenu à une liste peut impliquer d’autres facteurs, tels que parfois l’ajout de fichiers (comme Template.doc), la mise à jour de documents ou l’ajout de nouveaux champs. Solution : ce problème se produit uniquement pour la bibliothèque de documents Documents partagés et pas pour les bibliothèques de documents personnalisées. Pour les documents partagés, l’ajout d’un type de contenu crée un dossier Forms/<Content Type> et copie un fichier Template.doc dans ce dossier, ce qui entraîne le déclenchement des événements. |
PROBLÈME 2 |
Lors de l’ajout d’un document à une bibliothèque de documents en mode Explorateur à l’aide de WebDAV, les méthodes ItemAdding(SPItemEventProperties) et ItemAdded(SPItemEventProperties) sont appelées une fois, mais les méthodes ItemUpdating(SPItemEventProperties) et ItemUpdated(SPItemEventProperties) sont appelées deux fois. Solution : aucune. Il s’agit du comportement par défaut, car les processus internes impliqués dans l’ajout d’un fichier en mode dossier de l’Explorateur nécessitent l’appel de ces méthodes à deux reprises. |
PROBLÈME 3 |
Lorsque vous renommez un fichier dans une bibliothèque de documents à l’aide de WebDAV en mode Explorateur, l’événement d’affectation d’un nouveau nom ne déclenche pas les événements ItemUpdating(SPItemEventProperties) et ItemUpdated(SPItemEventProperties), sauf si vous modifiez également l’extension de fichier lors de l’affectation d’un nouveau nom au fichier. Solution : aucune. |
Sites Web
PROBLÈME |
DESCRIPTION |
---|---|
PROBLÈME 1 |
Pour les méthodes WebAdding(SPWebEventProperties) et WebProvisioned(SPWebEventProperties), la propriété ServerRelativeUrl est vide lorsque le site Web parent est le site Web racine. Solution : les valeurs correctes pour la propriété ServerRelativeUrl sur un événement WebAdding correspondent à l’URL du site Web parent. La valeur correcte sur un événement WebProvisioned est l’URL du sous-site Web nouvellement créé. |
PROBLÈME 2 |
Le fait de définir le statut du récepteur d’événements sur CancelNoError dans un événement WebDeleting(SPWebEventProperties) ou SiteDeleting(SPWebEventProperties) entraîne une redirection vers une page d’erreur qui indique que le site Web a été supprimé. Solution : aucune. Le contrôle retourne simplement l’appelant une fois l’événement déclenché. Le site Web n’a pas été supprimé. |
PROBLÈME 3 |
Le fait de définir le statut du récepteur d’événements sur CancelNoError dans un événement FieldAdding(SPWebEventProperties) entraîne une redirection vers une page d’erreur qui indique que la colonne n’existe pas lorsque vous ajoutez un champ à une liste. Solution : aucune. Le contrôle retourne simplement l’appelant une fois l’événement déclenché. La colonne n’a pas été supprimée. |
PROBLÈME 4 |
Le fait de définir le statut du récepteur d’événements sur CancelNoError dans un événement ItemAttachmentDeleting(SPWebEventProperties) entraîne une redirection vers une page d’erreur indiquant une erreur de type « Exception de HRESULT » lorsque vous essayez de supprimer une pièce jointe d’un élément. Solution : aucune. Le contrôle retourne simplement l’appelant une fois l’événement déclenché. |