我试图弄清楚如何使用 ThreadContext.Properties 设置每个用户的会话。
当用户登录网站时,用户 ID 存储在会话中。然后我想在成功登录后将此值附加到 ThreadContext.Properties["UserID"] 。
我正在使用 adonetappender 将日志条目保存到 db,并使用 %property{userid} 来检索值。但有时这个值读取为空。
所以基本上我想要的是:
1) 创建
private static readonly ILog log = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
在我要登录的那些页面上。
2) 成功登录后,我需要在 ThreadContext.Properties["UserID"] 中存储一个在整个用户会话中始终存在的值,并且可以从我登录的页面以及 global_asax 中的 Application_Error(...) 中使用. 无论如何,这个 ThreadContext 的寿命是多少?据我所知,我不能真正使用 GlobalContext。
3)我不想重新分配每个日志语句的值。
希望你能明白我要去哪里。
//丹尼尔