当前位置:编程学习 > C#/ASP.NET >>

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

下面是在系统出错时通过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
} --------------------编程问答-------------------- mark!
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,