异步任务,HttpContext.Current为null解决办法
最近在开发一个后台管理系统项目,为了提高登录的速度,就把记录登录日志放到一个异步任务里面。
Action taskAction = () => {SaveLog(); }; Task task = new Task(taskAction); task.Start();
有一段时间日志记录是正常的,突然有一天就不work了,本地调试也能重现这个错误,是System.Web.HttpContext.Current为null造成的,获取不了当前的用户名。
在网上搜了一下,确实很多用户遇到了,有推荐缓存System.Web.HttpContext.Current的,感觉挺麻烦的。
发现这个Current是可以set的,所以就想把当前线程里面的HttpContext.Current传到日志线程里面。
public static HttpContext Current { get; set; }
Action是个委托,委托是可以+=的,于是就封装了一下。
public class AsyncTaskHelper {/// <summary>/// 异步任务之前,设置HttpContext.Current/// </summary>/// <param name="context"></param>/// <param name="action"></param>public static void StartTask(HttpContext context, Action action){Action newAction = () =>{if (context == null){throw new Exception("请确保HttpContext.Current不为null");}HttpContext.Current = context;};newAction += action;Task task = new Task(newAction);task.Start();} }
调用也很简单
AsyncTaskHelper.StartTask(System.Web.HttpContext.Current, taskAction);
转载于:https://www.cnblogs.com/lhking/p/10228285.html
异步任务,HttpContext.Current为null解决办法相关推荐
- Android小米(miui)获取通话记录为null解决办法
Android小米(miui)获取通话记录为null解决办法 在开发中发现,查询通话记录时使用 contentResolver.query( CallLog.Calls.CONTENT_URI, Co ...
- 出现RuntimeWarning: Glyph 39057 missing from current font.的解决办法:
出现RuntimeWarning: Glyph 39057 missing from current font.的解决办法: 在程序开头添加如下程序: import matplotlib as mpl ...
- 异步导致UI句柄增加的解决办法
在很多操作中,都会使用到异步线程,具体怎样使用在这不说了,网上有很好的说明:本人通过Delegate.BeginInvoke实现异步调用,完成后对UI控件进行设值等,还有System.Timers.T ...
- Seconds_Behind_Master= NULL解决办法
今天在主主从数据库删除600多万数据时发现主从同步失败 show slave status\G; 发现 Seconds_Behind_Master= NULL 原因mysql日志的缓存区太小,io量太 ...
- PackagesNotFoundError: The following packages are not available from current channels的解决办法
解决方法一:将conda-forge添加到搜索路径上 首先,当出现这种报错时,应该首先尝试使用以下命令将conda-forge channel添加到你的channel列表中: conda config ...
- Cannot set property 'innerHTML' of null解决办法
今天写程序的时候出现了Cannot set property 'innerHTML' of null,网上查找了一些资料,原来js是自上而下调用的. 解决办法: 将js放在web页面你要编辑的元素的后 ...
- PHP 获取JSON json_decode返回NULL解决办法
在用json_decode对JSON格式的字符串进行解码时竟然为空,页面空白啊,整半天检查这里检查那里,问同事都没用. 今天必应搜索了下,问题解决了,原来是有BOM头输出,大虾的解决办法如下: 1). ...
- Hbase出现ERROR: Can‘t get master address from ZooKeeper; znode data == null解决办法
问题描述如下: hbase(main):001:0> list TABLE ERROR: Can't get master address from ZooKeeper; znode data ...
- HBase错误:ERROR: Can't get master address from ZooKeeper; znode data == null 解决办法
一.问题背景 使用命令 $ hbase shell 进入hbase的shell之后使用create命令创建表时出现错误:ERROR: Can't get master address from Zoo ...
- you need to resolve your current index first 解决办法
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 从一个分支A切换到另一个分支B后,对切换后的B分支进行pull操作,因为pull操作实际上包含了fe ...
最新文章
- easyui combotree的使用
- 汇编语言随笔(16)- 对磁盘进行读写(int 13h 中断例程)和实验 17
- 一张图搞定OAuth2.0
- 轻松搭建基于 Serverless 的 ThinkPHP 应用
- centos 7 minimal connect: Network is unreachable和ifconfig command not found
- EasyUI中tree,Datagrid,pagenation的使用EasyUI中Datagrid和pagenation进行关联时,再次点击pagenation时让表格数据显示的问题
- linux中Shell历史命令记录文件的路径是什么
- jquery的一个代码
- 深度解析:会用Excel,还有必要学Python吗?
- 4位无符号比较器设计
- 【模板】KMP算法、fail树
- swagger api文档_带有Swagger的Spring Rest API –创建文档
- LeetCode:Remove Nth Node From End of List 移除链表倒第n项
- Win32API 数据基本类型
- jenkins修改pom文件_自动化部署—Jenkins+Docker构建工程
- 【数据结构笔记32】排序算法概述、简单排序(冒泡排序、插入排序)、逆序对
- Crush Crouse 心理学笔记
- 汉王考勤管理系统 与服务器连接失败,汉王考勤管理系统
- ensp mstp+vrrp配置实验
- 批量修改文件夹中所有文件的格式为指定格式
热门文章
- 【译】给小白准备的Web架构基础知识
- React.js和Vue.js有感—前端开发组件化思想的局部要点理解
- [老老实实学WCF] 第五篇 再探通信--ClientBase
- CentOS yum 一次性安装所需要的依赖库。
- socket与http的区别
- 【笔记】如何配置kvm桥接网络
- html文章标题加粗,织梦去除推荐文章标题加粗标签的方法
- Unable to instantiate application com.honjane.app.MyApplication
- 【git体验】git原理及基础
- Luogu1091 合唱队形