沒有看到您的源代碼我只能做出假設,但我認爲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