将会话变量或自定义字段添加到Elmah错误日志表
问题描述:
我想将自己的会话变量添加到elmah错误日志表并显示它。我已经修改了源代码并将新字段添加到Error.cs和其他字段,但我不知道但是当我将HttpContext.Current.Session [“MyVar”]。tostring()值分配给我的字段构造函数停止记录异常并且不记录任何异常。将会话变量或自定义字段添加到Elmah错误日志表
我只需要获取会话变量的值是否有其他方式呢?我读了一篇文章,他为电子邮件添加了字段,但没有说明我应该在哪里获得会话价值。我还读了会话和Cookie记录由Elmah默认记录,但我不知道如何访问他们..感谢大家的帮助。
答
没有看到您的源代码我只能做出假设,但我认为Elmah会停止日志记录,因为您会收到异常。这可能是因为Session
属性为空。该会话仅在PostAcquireRequestState
事件后可用,因此您无法指望此属性始终可用。
我这个尝试自己写了这样的方法:
private static Dictionary<string, object> CopySession(HttpSessionState session)
{
if (session == null || session.Count == 0)
return null;
Dictionary<string, object> copy = new Dictionary<string, object>(session.Count);
foreach (var key in session.Keys)
{
string name = key.ToString();
copy.Add(name, session[name]);
}
return copy;
}
我称之为Error类的这样的构造这种方法:
// _session is a new field that I added like this:
// private Dictionary<string, object> _session;
_session = CopySession(context.Session);
(刚过服务器变量和其他上下文的内容被复制,您可能需要更改IClonable
实现以复制_session
字段。)
In我的测试按预期工作。我只在SqlErrorLog
类中检查过,但是对于所有其他ErrorLog类都是相同的:错误对象包含我所有的会话变量,我可以以任何我想要的方式将它们存储在数据库中。
那么修补程序链接不工作.. – Vishal 2010-05-21 14:47:19