写日志出错,请问怎回事?附有代码

okzjq 2009-01-15 01:39:12
在系统出错时通过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
}
...全文
45 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
okzjq 2009-01-15
  • 打赏
  • 举报
回复
是否静态方法有关呢?
okzjq 2009-01-15
  • 打赏
  • 举报
回复
HttpContext.Current.Session 为空,但是实际上系统还可以正常使用,用户的信息也
可以从session里获取的。
刀枪blue 2009-01-15
  • 打赏
  • 举报
回复
(HttpContext.Current != null && HttpContext.Current.Session != null
这句是否为空了
说明文件 ============================= 软件:极限网上网店系统(eWebShop) 版本:V2006.03B060101 目录说明 ============================= DLL : 极限组件安装目录 eWebShop : 程序目录 readme.txt : 本说明文件 安装步骤 ============================= 1、修改config.asp文件中的参数设定。各参数详见文件中的注释。 a. 修改数据库文件名及路径。注意:为保证安全,一定要修改数据库的文件名和路径。 b. 修改序列号信息。如果您购买了商业版本,我们将提供给您相应版本的序列号,请把序列号信息在此文件中。 2、在服务器上运行DLL文件夹中的“注册组件.bat”文件,进行组件的注册。 3、安装完成! 使用 ============================= 1、访问前台可以用以下地址: 本机:http://localhost/eWebShop/ 站点:http://www.你的域名.com/ 2、访问后台可以用以下地址: 本机:http://localhost/eWebShop/admin.asp 站点:http://www.你的域名.com/admin.asp 默认登录用户:admin 默认登录密码:admin 3、初次使用后台功能时一般的使用顺序如下: 修改密码 -> 系统设置 -> 分类管理 -> 新增商品 -> 商品管理 卸载 ============================= 如果您不再使用本系统,请按以下步骤进行卸载: 1、运行DLL文件夹中的“卸载组件.bat”文件 2、删除eWebShop文件夹 3、卸载完成! 功能特点 ============================= eWebShop网上商店系统是一套能够适合不同类型商品、超强灵活的多功能在线商店系统,为您提供了一个完整的在线开店解决方案。eWebShop网上商店系统除了拥有一般网上商店系统所具有的所有功能,还拥有着其它网店系统没有的许多超强功能。 1、最强模板定制: 基于eWebSoft始创的超强模板构架,您的系统界面布局几乎可以完全个性化定制。不再是简单的颜色或图片变化,真正的界面与数据的分离,完全超越了所有市面上的其它系统。系统自带多套基于此架构的模板方案,您只需轻轻一点,即可完成整个系统界面的完全变化。定制自己网站的界面,我的网站效果我做主。比较看看,有什么与众不同? 2、点卡商品: 支持非实体商品的销售,具有数字商品卡号入库加密存储、自动计算库存、直接在线支付订单、支付成功后直接显示+邮件发货、一全套的数字商品销售功能。 3、组合商品: 特有的组合商品功能,使您不再要为次要属性不同的相同商品管理及销售订单而烦恼。如您开办了一个服装商店,一种服装有不同的颜色和不同的尺码等,您不必再在商品管理中增加红色西服,兰色西服等多个商品。您只需增加一个西服的商品,在商品属性中选择红色和兰色,则用户在下单时系统会要求用户选择一种颜色,并把此信息存入订单,店主在查看订单时就可以根据此信息来直接发货了,而无需再联系顾客了解确认一件件商品的附加属性,即容易出错,也浪费了大量的时间。 4、套餐商品: 特有的套餐商品功能,为您提供了一种直接有效促销手段。如您有一个软件商品,又有一个虚拟主机商品,您是否想增加一个软件+主机的套餐进行促销呢?一个套餐商品可以包含无限个子商品,可以独立定价,独立管理,套餐商品还能包含组合商品。 5、超强扩展属性: 基于分类的扩展属性,使您可以基于一套系统建立多样的属性完全不同的商店系统。采用eWebShop可以建立,如:网上花店、网上书店、网上点卡店、网上成人用品店、网上玩具店、网上书店、网上手机店、网上数码产品销售店、网上化妆品店、网上服装店、网上保健品店、网上玩具店、网上车模店、网上音像制品店等。您也可以在一个网站中包含所有上面的栏目。您可以在书店分类栏目中加入ISBN、图书作者、精装简装等图书特有的属性,可以在服装店分类栏目加入颜色、尺码等服装特有的属性。完全定制的属性,使您可以建立完全不同的网店。并且支持扩展属性的高级搜索,使您可以在书店中使用ISBN进行搜索,在服装店中使用颜色进行搜索。 6、多种支付网关: 内置支付宝、西部支付、首信、IPAY、NPS、IPS、网银、云网、快钱、AllPay等十多种主要的在线支付接口,只需选择一个支付接口填入资料即可使用。也允许同时使用多个不同支付接口。大部分接口在线支付后可直接入会员帐户或直接支付订单。您还可以为每种在线支付接口设置一个费率,让顾客来支付使用在线支付平台的手续费。 7、虚拟币功能: 虚拟币的有效使用是您留住顾客的一种有效途径。您是否想用买100送10的促销方式呢?您是否想长期留住客户呢?强大的虚拟币功能,您可以设置是否开启此功能,可以为每个商品设置赚送的虚拟币数量及是否允许使用虚拟币购物。还有生日送币,注册送币,手动送币,虚拟币日志等功能。同时,利用虚拟币功能,增加积分转换接口,可以大大提高论坛社区的人气,创建友好购物氛围。 8、预付款中心: 有了预付款中心,您的代理客户或长期客户不再需要为每个订单支付相应款项,可以一次性预存足额的款项,以后只需下单收货即可,不再需要每次进入在线支付或跑银行汇款了。顾客给账户充值,可以通过在线支付的方式提交预付款直接生效,或银行汇款转账等离线方式提交预付款由店主审核生效。顾客下订单可以选择从预付款中直接扣、进入在线平台支付、汇款转账支付。 9、灵活的商品定价: 基于会员等级折扣定价功能,使您可以灵活完全的控制每个商品对应每个顾客的价格。您可以增加无限个会员等级,如:金牌会员,银牌会员,一级代理,二级代理等,可以设置每个会员等级的默认商品折扣及每次订单的最低消费金额,您也可以设置每个商品对应各等级的会员折扣。增强的三种价格模式:市场价格、商城价格、会员价格,使您的商店价格体系得到完全的控制。 10、赠品: 特有的赠品促销在网店上的应用。您是否想过为您的网店增加一元商品,是否想打出满100送水杯,满300送背包?所有这些都可以通过赠品管理得已实现。 11、自动计算附加费用: 支付手续费,配送费用可以根据需要随意的设定。可自定义选择使用的在线支付平台及需要的支付手续费费率。可自定义配送方式,设置每个配送方式的起点运费、起点重量和单价运费,结合商品的重量自动计算订单的配送费用。实现整个订单所有相关费用的完全自动化。 12、安全保证: 基于eWebSoft团队多年专业WEB开发的经验,从参数、结构、规范、设计上都为系统的安全提供第一位的保证。所有密码使用MD5不可逆加密,所有参数进行服务器端的有效性检验,重要操作都有日志,涉及钱的数据都进行流水账处理(如日志删除并不影响余额),备份关联处理(如商品删除了,原来有订购此商品的订单可有效查看),等等。同时对于常见的SQL注入问题,以及流行的上传漏洞攻击等问题都作了完善的处理。所有技术上、设计上的处理都为整个系统的安全做好了充分有效的保障。 13、非注册会员直接下单: 顾客无需注册成为会员就可以下单购物,既使会员具有丰富的会员功能,也使普通顾客购物直接、简单。 14、商品多重归类: 使用商品归类功能,可将一个商品归于多个类别,如某商品既是数码产品,又适合作为礼品。 15、库存报警: 通过此功能,店主可以及时了解缺货商品,并相应做出补货处理。 16、商品批量导入: 使用CSV标准通用文件格式,可以快速成批导入商品数据,快捷方便! 17、销售统计报表: 实时的销售统计报表,掌握销售业绩,有助分析存在问题。 18、无限级分类: eWebShop支持无限级的商品分类,您可以自由的在后台进行设置,除了常用的分类增、删、改功能,附有便捷的分类排序、复位、移动等功能。 19、可视内容编辑: 采用国内最好的,eWebSoft团队自主开发的eWebEditor在线HTML编辑器,您可以更好的直接在线可视编辑发布HTML的文章内容。 20、搜索引擎优化: 特别针对各大搜索引擎进行优化,有助于网店的搜索引擎收录。 21、实用的辅助功能: 动态缓存:把常用的不经常更新的内容自动加入缓存,大大提高系统的效率。 自动关键字匹配:可以设置关键字库,自动匹配相关商品。 上传文件管理:具有上传文件查看、智能清理垃圾文件、清空等功能。 广告管理:支持图片、文字、Flash形式的广告位在线管理功能。 权限管理:支持多人控管模式,严格的权限审核制度。 公告管理:发布及管理站点最新动态,通知等公告信息。 友情链接:支持图片和文字链接,具有排序功能。 帮助中心:可以根据自己的需要增加任意多个帮助项目。如:常见问题,关于我们,购物流程等。 留言反馈:支持店主回复,允许隐藏留言内容,使得只有发布人与管理员可以看见。 商品评论:顾客可以对商品进行评论,管理员可以对评论进行管理。 在线消息:会员可以给管理员发消息,管理员可以给单个、多个会员、会员组、所有会员发消息。 收藏夹:会员可以把中意的商品加入收藏夹,方便下次浏览。管理员可对收藏夹进行管理。 管理员登录日志:方便查看其它管理员的工作情况,并检查账号是否有被它人登录,关注安全。 使用特点 ============================= eWebShop网上商店系统不仅在功能上完整强大,而且在界面、操作、文档等使用上也紧扣用户的需求。做到功能强大,又不失简单易用。 1、超强营销: 能为使用者提供各种有利的营销手段,实现网站经营者的营销策略,加强促销手段方式、会员等级折扣、虚拟货币、预付款、组合商品、套餐商品、点卡商品、赠品、定单的管理设置,实现访客下单等功能。最终为经营者带来收益。 2、使用简单: 您不需要懂得专业的网络计算机知识,会打字就行。极限网上商店系统,属于全自动化、智能的全在线方式管理、维护、更新的网上商店系统。用这套网店系统,建设网上商店,将不是网络专家的专利,通过强大的管理后台,您就能非常方便的建设、管理、维护、更新您自己的网上商店。 3、操作简便: 软件操作界面由专业设计人员设计,人性化的布局,界面规范,操作简捷。 4、完整帮助: 可随时查看当前功能帮助。提供丰富翔实的帮助文档和系统安装使用文档。 5、标准界面: 采用eWebSoft标准后台管理界面,美观专业,大量的相关查询定位,导航明了,功能统一,尽量让您少一次点击。 6、完整完善: 前台所有功能在后台都可以得到很好的设置和管理。除拥有商店模块的主体功能外,还公告、留言、评论等扩展模块。达到真正完整的网上购物平台系统。 发布日期 ============================= 2006年01月01日
网管教程 从入门到精通软件篇 ★一。★详细的xp修复控制台命令和用法!!! 放入xp(2000)的光盘,安装时候选R,修复! Windows XP(包括 Windows 2000)的控制台命令是在系统出现一些意外情况下的一种非常有效的诊断和测试以及恢复系统功能的工具。小编的确一直都想把这方面的命令做个总结,这次辛苦老范给我们整理了这份实用的秘笈。   Bootcfg   bootcfg 命令启动配置和故障恢复(对于大多数计算机,即 boot.ini 文件)。   含有下列参数的 bootcfg 命令仅在使用故障恢复控制台时才可用。可在命令提示符下使用带有不同参数的 bootcfg 命令。   用法:   bootcfg /default  设置默认引导项。   bootcfg /add    向引导列表中添加 Windows 安装。   bootcfg /rebuild  重复全部 Windows 安装过程并允许用户选择要添加的内容。   注意:使用 bootcfg /rebuild 之前,应先通过 bootcfg /copy 命令备份 boot.ini 文件。   bootcfg /scan    扫描用于 Windows 安装的所有磁盘并显示结果。   注意:这些结果被静态存储,并用于本次会话。如果在本次会话期间磁盘配置发生变化,为获得更新的扫描,必须先重新启动计算机,然后再次扫描磁盘。   bootcfg /list   列出引导列表中已有的条目。   bootcfg /disableredirect 在启动引导程序中禁用重定向。   bootcfg /redirect [ PortBaudRrate] |[ useBiosSettings]   在启动引导程序中通过指定配置启用重定向。   范例: bootcfg /redirect com1 115200 bootcfg /redirect useBiosSettings   hkdsk   创建并显示磁盘的状态报告。Chkdsk 命令还可列出并纠正磁盘上的错误。   含有下列参数的 chkdsk 命令仅在使用故障恢复控制台时才可用。可在命令提示符下使用带有不同参数的 chkdsk 命令。   vol [drive:] [ chkdsk [drive:] [/p] [/r]   参数  无   如果不带任何参数,chkdsk 将显示当前驱动器中的磁盘状态。 drive: 指定要 chkdsk 检查的驱动器。 /p   即使驱动器不在 chkdsk 的检查范围内,也执行彻底检查。该参数不对驱动器做任何更改。 /r   找到坏扇区并恢复可读取的信息。隐含着 /p 参数。   注意 Chkdsk 命令需要 Autochk.exe 文件。如果不能在启动目录(默认为 %systemroot%System32)中找到该文件,将试着在 Windows 安装 CD 中找到它。如果有多引导系统的计算机,必须保证是在包含 Windows 的驱动器上使用该命令。 Diskpart   创建和删除硬盘驱动器上的分区。diskpart 命令仅在使用故障恢复控制台时才可用。   diskpart [ /add |/delete] [device_name |drive_name |partition_name] [size]   参数 无   如果不带任何参数,diskpart 命令将启动 diskpart 的 Windows 字符模式版本。   /add   创建新的分区。   /delete   删除现有分区。   device_name   要创建或删除分区的设备。设备名称可从 map 命令的输出获得。例如,设备名称:   DeviceHardDisk0   drive_name   以驱动器号表示的待删除分区。仅与 /delete 同时使用。以下是驱动器名称的范例:   D:   partition_name   以分区名称表示的待删除分区。可代替 drive_name 使用。仅与 /delete 同时使用。以下是分区名称的范例:   DeviceHardDisk0Partition1    大小   要创建的分区大小,以兆字节 (MB)表示。仅与 /add 同时使用。   范例   下例将删除分区: diskpart /delete Device HardDisk0 Partition3 diskpart /delete F:   下例将在硬盘上添加一个 20 MB 的分区:   diskpart /add Device HardDisk0 20   Fixboot

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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