2009-06-29 5 views
1

comment puis-je rediriger vers une page de sharepoint?rediriger le code ne fonctionne pas dans itemreceiver

j'ai ce dans le récepteur d'événements ItemAdded pour une liste:

SPUtility.Redirect("http://mysite", SPRedirectFlags.Default, HttpContext.Current); 

mais le débogage HttpContext.Current est nulle de sorte qu'il ne marche pas faire une redirection lorsqu'un élément de liste est ajouté.

Répondre

6

L'événement ItemAdded se produit de manière asynchrone (c'est-à-dire quelque temps après l'ajout de l'élément). Il s'exécute sur un thread distinct qui n'a pas accès au HttpContext pour la requête en cours (et donc vous ne pourrez pas envoyer de réponse pour rediriger le navigateur de l'utilisateur).

Cela peut fonctionner dans le récepteur d'événement ItemAdding - il s'exécute sur le même thread qui ajoute l'élément à la liste. Je ne suis pas sûr qu'il soit sûr d'effectuer une redirection car cela pourrait empêcher l'exécution d'autres codes sous-jacents dans SharePoint.

Ceci a été répercuté par Lars Fastrup in one of your previous questions (redirect using itemreceiver sharepoint). Envisager de mettre en œuvre la solution qu'il recommande ici.

+0

réponse parfaite. Voyant que ItemEventReceivers se produit de manière asynchrone, il est théoriquement possible qu'un utilisateur soit redirigé après 30 secondes alors qu'il est déjà en train de faire quelque chose d'autre. Imaginez son visage quand tout à coup il se retrouve sur une page différente :-P – Colin