没有看到您的源代码我只能做出假设,但我认为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