自定义Elmah ysod数据
题
我正在将Elmah与ASP.NET一起使用,并想知道如何将自定义数据(例如会话变量)添加到未经处理的异常电子邮件中。
我在global.asax文件中尝试了几个处理程序,但似乎找不到合适的处理程序。
解决方案
为此,我认为您需要修改Elmah 资源 并重新编译。实现不难。如果您看一下构造函数 Elmah.Error
班级, HttpContext
传递,您应该从中获得所需的信息,例如会话,表单变量等。您可以将自定义字段添加到 Elmah.Error
该数据的课程
我觉得 Elmah.ErrorMailHtmlFormatter
上课是电子邮件的构造的地方 HtmlTextWriter
, ,在这里您可以在 RenderSummary()
包括您添加到的自定义字段的方法 Elmah.Error
.
我知道开始使用Source可能会很痛苦,但是我个人认为这是最干净的方式,因为目前没有报告/电子邮件模板的设施,并且最好是在生成后改变输出的事物来改变输出。
其他提示
安德鲁的回答很有帮助,谢谢。我最终做了以下操作:
- 在错误的HTTP模块中添加了一个建筑事件。此事件的事件ARG具有名称valuecollection属性。
- 我处理了global.asax中的Onbuilding活动。
- 由于httpmodules并非总是可以访问SessionState,ESP。如果在加载会话之前发生异常,则我将要报告的数据复制到httpapplication缓存中(由sessionID索引)。
- 当发生异常时,我会通过存储在请求中的sessionID(特别是在cookie中)中获取想要从应用程序缓存的数据。我从此数据生成了名称valuecollection,并通过Onbuilding args将其发送回httpmodule。
- 然后,将数据渲染到与服务器变量部分渲染的方式相似的电子邮件。
不隶属于 StackOverflow