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

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
}
...全文
101 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
万小萌 2009-01-15
  • 打赏
  • 举报
回复
mark!
代码下载地址: https://pan.quark.cn/s/f772f44531a5 FFmpeg 是一款功能丰富的开源命令行软件,能够对多种类型的多媒体数据,涵盖音频及视频内容,进行操作。它具备多种能力,例如进行格式转换、合并不同媒体、分割文件、执行编码与解码处理、以及实现流媒体传输等。在此特定情境下,主要探讨如何运用 FFmpeg 来处理 MP4 文件的播放难题,特别是那些无法通过流式传输正常播放的文件。MP4 文件播放时可能遇到的障碍,可能是由播放器不兼容的编码方式、容器结构错误、元数据位置设置不当,或是缺少必要的流信息所导致。FFmpeg 能够协助我们识别并修正这些问题。 1. **针对 MP4 文件的检测与修复**:借助 FFmpeg 的 `-i` 参数,可以获取 MP4 文件的详细资料,例如: ``` ffmpeg -i problematic.mp4 ``` 若发现编码方式、时间轴或容器结构存在问题,可尝试对文件进行重新封装(remuxing)或重新编码(transcoding)。例如,通过简单的重新封装操作: ``` ffmpeg -i problematic.mp4 -c copy fixed.mp4 ``` 此指令将维持视频和音频流的原状,仅更换文件的容器格式。 2. **应对流传输挑战**:当文件无法以流方式播放时,通常是因为流信息未正确嵌入文件头部。FFmpeg 可用于解决该问题: ``` ffmpeg -i problematic.mp4 -movflags +faststart output.mp4 ``` ...

111,129

社区成员

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

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

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