困惑不解,请求解决,附上代码

okzjq 2009-01-15 12:03:44
下面是在系统出错时通过log4net写日志的类,但在写WriteEventLog()写日志的方法中,CurrentSessionInfo的内容永远是
“Anonymous User And System Session is Null”,请问为什么会这样呢?

public class EventLog
{
#region 私有构造函数,单件模式,防止被实例化
/// <summary>
/// 私有构造函数,单件模式,防止被实例化
/// </summary>
private EventLog()
{
}
#endregion

#region 是否启用日志事件跟踪
/// <summary>
/// 是否启用日志事件跟踪
/// </summary>
protected static bool EnableEvent
{
get
{
return ConfigInfo.WEB_SYSTEM_ENABLEEVENTLOG;
}
}
#endregion

#region 事件信息体结构
/// <summary>
/// 事件信息体结构
/// </summary>
private struct EventBody
{

#region 当前会话信息属性
/// <summary>
/// 当前会话信息属性
/// </summary>
public string CurrentSessionInfo
{
get
{
StringBuilder SessionInfo = new StringBuilder();

if (HttpContext.Current != null && HttpContext.Current.Session != null)
{
for (int i = 0; i < HttpContext.Current.Session.Count; i++)
{
SessionInfo.Append("\r\n\tSession[").Append(HttpContext.Current.Session.Keys[i])
.Append("] = ").Append(TypeParseHelper.StringParse(NetHelper.CurrentContext.Session[i]));
}
}

if (SessionInfo.Length == 0)
{
return "Anonymous User And System Session is Null!";
}
else
{
return SessionInfo.ToString();
}
}
}
#endregion

#region 远程主机IP地址
/// <summary>
/// 远程主机IP地址
/// </summary>
public string UserHostAddress
{
get
{
return NetHelper.GetIP();
}
}
#endregion

#region 出错页面地址
/// <summary>
/// 出错页面地址
/// </summary>
public string ErrorPage
{
get
{
return RequestHelper.GetUrl();
}
}
#endregion

#region 页面来源地址
/// <summary>
/// 页面来源地址
/// </summary>
public string ReferrerPage
{
get
{
return RequestHelper.GetUrlReferrer();
}
}
#endregion

#region 相关变量

/// <summary>
/// 事件等级变量
/// </summary>
public EventLevelEnum EventLevel;

/// <summary>
/// 事件源变量
/// </summary>
public EventSourceEnum EventSource;

/// <summary>
/// 事件标题变量
/// </summary>
public string EventTitle;

#endregion
}
#endregion

#region 初始化log4net
/// <summary>
/// 初始化log4net
/// </summary>
public static void Initializelog4net()
{
//log4net.Config.DOMConfigurator.Configure();
log4net.Config.XmlConfigurator.Configure();
}
#endregion

#region 写事件方法
/// <summary>
/// 写事件方法
/// </summary>
/// <param name="objEventBody">事件信息体</param>
/// <param name="oExp">事件</param>
public static void WriteEventLog(EventBody objEventBody, Exception oExp)
{
if (!EnableEvent)
return;

//事件信息初始化
StringBuilder strEventMessage = new StringBuilder();
strEventMessage.Append("<b>内容标题:</b>").Append(objEventBody.EventTitle).Append("\r\n<br>");
strEventMessage.Append("<b>远程主机:</b>").Append(objEventBody.UserHostAddress).Append("\r\n<br>");
strEventMessage.Append("<b>会话信息:</b>").Append(objEventBody.CurrentSessionInfo).Append("\r\n<br>");

log4net.ILog log = log4net.LogManager.GetLogger("Kinyu");

switch ((EventLogEntryType)objEventBody.EventLevel)
{
case EventLogEntryType.Error:
log.Error(strEventMessage, oExp);
break;
case EventLogEntryType.FailureAudit:
log.Error(strEventMessage, oExp);
break;
case EventLogEntryType.Information:
log.Info(strEventMessage, oExp);
break;
case EventLogEntryType.SuccessAudit:
log.Info(strEventMessage, oExp);
break;
default:
log.Warn(strEventMessage, oExp);
break;
}
}
#endregion
}
...全文
104 1 打赏 收藏 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
万小萌 2009-01-15
  • 打赏
  • 举报
回复
mark!
打开链接下载源码: https://pan.quark.cn/s/d85aa9a28238 FreeRTOS,其全称为“Free Real-Time Operating System”,是一款具备开源特质且设计轻巧的实时操作系统(RTOS),主要应用于嵌入式系统领域。该“freertos工程文件以及官方文档.rar”压缩包内含了与FreeRTOS关联的工程文件、官方文档资料以及其他用于移植的文件,是进行FreeRTOS学习与应用的关键性资源。 FreeRTOS的核心特质涵盖任务调度机制、中断处理功能、同步机制设计以及内存管理策略。其中,任务调度机制是其核心功能,借助优先级抢占式调度算法,保障高优先级任务能够获得及时响应。中断处理功能是嵌入式系统中的关键环节,FreeRTOS支持在中断执行环境中开展特定操作,同时确保任务执行状态的安全。同步机制例如信号量、互斥量及事件标志组,主要用于实现任务之间的通信与协调。内存管理部分则负责动态分配和释放内存资源,以满足不同任务的特定需求。 工程文件通常由源代码、配置文件、编译脚本等构成,能够帮助开发者深入理解FreeRTOS的工作原理,并在此基础上进行定制化开发。例如,`FreeRTOSConfig.h`作为FreeRTOS的核心配置文件,允许用户依据目标硬件条件和应用需求调整内核参数,比如任务数量、堆大小等。 官方文档资料是学习FreeRTOS的重要参考资料,其内容详尽地阐述了系统架构、API函数、应用示例等关键信息。通过研读这些文档,开发者可以掌握如何创建任务、配置中断、实现任务间的同步与通信,以及如何对FreeRTOS系统进行调试和优化。 移植文件主要涉及将FreeRTOS部署于不同的微控制器(MCU)或硬件平台之上。每个平...

111,128

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧