Remarque: Je connais les différentes raisons pour éviter d'utiliser la session, mais c'est un projet que j'ai hérité, s'il vous plaît ignorer cette partie de toutes les réponses :) P>
Puisque c'est un problème résolu, j'espère que quelqu'un peut pointer vers un patch / une branche / fourchette d'Elmah qui inclut des données de la session de journalisation plutôt que de réinventer la roue. P>
Une chose étrange est un ancien poste d'ATIF qui dit qu'ils sont déjà enregistrés: p>
http://markmail.org/Message/ncmdgwm5rmzewbwu p>
commentateur Henningst mentionné Ajouter dans les variables de session ici: p>
http://www.hanselman.com/blog/ELMAHErrorLoggingModulesAndHandlersForASPNETAndMVCToo.aspx < / p>
Une autre approche (je préférerais éviter) la copie des valeurs dans des cookies p>
http://www.sharpdeveloper.net/content/archive/2008/11/10/how-o-get-session-OR-Outher-Custom-values-into-elmah.aspx A > p>
Je sais qu'une alternative consiste à passer à quelque chose à côté d'Elmah (comme Exceptionnel - voir http: // exceptionnant. com / public / exceptionnelandelmah.aspx ) Mais comme il s'agit de mon seul problème avec Elmah pour le moment, je préférerais juste avoir une elmah patchée que de passer à autre chose. P>
3 Réponses :
Atif a répondu sur Twitter pour dire qu'il n'y a pas de patch connu: p>
http://twitter.com/raboof/statats/7229453423 P>
Alors j'ai créé un patch qui le fait: p>
http://twitter.com/manningj/statats/7231616905 P>
http: // blog .sublogic.com / 2009/12 / Patch-to-Activer-Session-Variable-Logging-with-elmah / p>
Vous n'avez pas vraiment besoin de patcher apparemment, alors je suis révélateur. Vérifiez la réponse des penseurs
Plutôt que de corriger Elmah, je l'ai fait avec des données d'exception. Dans Global.Asax, j'ai inséré les données supplémentaires à l'exception sur Application_Error (). "HistoireStack" est ma propre classe pour enregistrer l'historique des utilisateurs, y compris le bouton et l'onglet clics: puis, dans errorormail_mailing (), j'ai saisi les données et l'a annexé dans l'e-mail: P > void ErrorMail_Mailing(object sender, Elmah.ErrorMailEventArgs e)
{
var stack = e.Error.Exception.Data["historyStack"] as Stack<string>;
if (stack == null && e.Error.Exception.InnerException != null)
{
// could probably skip the first try and go straight to this assignment:
stack = e.Error.Exception.InnerException.Data["historyStack"] as Stack<string>;
}
if (stack != null && stack.Count > 0)
{
e.Mail.Body = e.Mail.Body + "<h1>Browsing History</h1>" + System.Environment.NewLine;
while (stack.Count > 0)
{
e.Mail.Body = e.Mail.Body + stack.Pop() + "<br />" + System.Environment.NewLine;
}
}
}
C'est essentiellement ce que j'ai fait aussi, sauf que je crée une pièce jointe à l'e-mail pour garder des variables de session un peu séparées. L'inconvénient est que vous appuyez sur le module mailing Elmahs, donc s'il y a quelqu'un qui ne l'utilise pas, ils sont toast + Vous ne pouvez pas interroger sur votre base de données pour obtenir des statistiques sur ces variables.
Quel est le format de l'historiqueStack.dump () valeur retournée? Est-ce juste en clair de crlf?
Cela ne semble pas fonctionner pour moi. Bien que Application_error () incendie, les données supplémentaires ne semblent jamais se retrouver dans le XML dans la base de données, il n'ya donc aucun moyen de le voir :( Y a-t-il une étape supplémentaire requise quelque part?
@Nickg HistoryStack.dump () Retourne une pile
@Thinkofanumber Où mettez-vous errorormail_mailing code>? Dans Global? Est-ce que Elmah vient juste le chercher et l'exécuter?
J'ai compris que vous venez de le mettre dans le fichier global et qu'il l'exécute. Comment stockez-vous HistoryStack code>? Il semble que je ne puisse pas utiliser la session pour cette session de Becuase n'existe pas au
Application_Error Code>.
L'ancien patch pouvant être creusé est malheureusement un peu obsolète avec Elmah maintenant. Voici ce que j'ai fait pour enregistrer les variables de session dans la version 2.0.15523.27 Basé sur un ancien patch trouvé ici: https://storage.googleapis.com/google-code-attachments/elmah/issue-12/comment-5/elmah-sessionvariables.patch
en erreur.cs fort > p> import system.web.sessionState p> trouver: p> Ajouter ci-dessous: trouver: p> Ajouter ci-dessous: p> <section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah.AspNet, Version=2.0.15523.27, Culture=neutral, PublicKeyToken=null" />