我正在将Elmah与ASP.NET一起使用,并想知道如何将自定义数据(例如会话变量)添加到未经处理的异常电子邮件中。

我在global.asax文件中尝试了几个处理程序,但似乎找不到合适的处理程序。

有帮助吗?

解决方案

为此,我认为您需要修改Elmah 资源 并重新编译。实现不难。如果您看一下构造函数 Elmah.Error 班级, HttpContext 传递,您应该从中获得所需的信息,例如会话,表单变量等。您可以将自定义字段添加到 Elmah.Error 该数据的课程

我觉得 Elmah.ErrorMailHtmlFormatter 上课是电子邮件的构造的地方 HtmlTextWriter, ,在这里您可以在 RenderSummary() 包括您添加到的自定义字段的方法 Elmah.Error.

我知道开始使用Source可能会很痛苦,但是我个人认为这是最干净的方式,因为目前没有报告/电子邮件模板的设施,并且最好是在生成后改变输出的事物来改变输出。

其他提示

安德鲁的回答很有帮助,谢谢。我最终做了以下操作:

  1. 在错误的HTTP模块中添加了一个建筑事件。此事件的事件ARG具有名称valuecollection属性。
  2. 我处理了global.asax中的Onbuilding活动。
  3. 由于httpmodules并非总是可以访问SessionState,ESP。如果在加载会话之前发生异常,则我将要报告的数据复制到httpapplication缓存中(由sessionID索引)。
  4. 当发生异常时,我会通过存储在请求中的sessionID(特别是在cookie中)中获取想要从应用程序缓存的数据。我从此数据生成了名称valuecollection,并通过Onbuilding args将其发送回httpmodule。
  5. 然后,将数据渲染到与服务器变量部分渲染的方式相似的电子邮件。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top