asp.net 异步代码块的日志不能正常打印

现象为程序的调度任务内的异步方法不能正常打印日志,同步方法正常,自测用写死路径的打印方法正常,framework 4.5。

先说原因:

多线程下HttpContext.Current会丢失。

问题出在以下位置:

  try
 {
          sFileDir = HttpContext.Current.Request.PhysicalApplicationPath;
  }
catch
 {
         FileDir = Environment.CurrentDirectory;
 }

int n = sFileDir.IndexOf("某特定字符串l");

sFileDir = sFileDir.Substring(0, n) + "某特定字符串l\\JTZJ\\" + TxtFileName;

HttpContext.Current.Request.PhysicalApplicationPath 同步为程序路径,异步时走到这里未实例化

Environment.CurrentDirectory 都为 c:\windows\system32\inetsrv

具体原因猜测调度服务是单独起的IIS,应用程序调用接口触发,同步时可以获取到HttpContext.Current,异步程序丢失,在IIS路径下没有找到特定字符串,认为为非法路径。

解决方法,在异步程序中 HttpContext.Current接一下主线程的.Current后正常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值