问题一:多线程下获取文件绝对路径

当我们使用HttpContext.Current.Server.MapPath(strPath)获取绝对路径时HttpContext.Current为null,解决办法如下:

[c#] view plain copy print?
  1. ///
  2. /// 获得当前绝对路径
  3. ///
  4. /// 指定的路径
  5. /// 绝对路径
  6. public static string GetMapPath(string strPath)
  7. {
  8. if (strPath.ToLower().StartsWith("http://"))
  9. {
  10. return strPath;
  11. }
  12. if (HttpContext.Current != null)
  13. {
  14. return HttpContext.Current.Server.MapPath(strPath);
  15. }
  16. else //非web程序引用
  17. {
  18. strPath = strPath.Replace("/", "\\");
  19. if (strPath.StartsWith("\\") || strPath.StartsWith("~"))
  20. {
  21. strPath = strPath.Substring(strPath.IndexOf('\\', 1)).TrimStart('\\');
  22. }
  23. return System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, strPath);
  24. }
  25. }

问题二:多线程下获取缓存问题

多线程下使用HttpContext.Current.Cache.Get(key)获取缓存时HttpContext.Current为null,解决办法如下:

HttpRuntime.Cache.Get(key);

从MSDN上的解释可以看出,HttpRuntime.Cache是应用程序级别的,而HttpContext.Current.Cache是针对当前WEB上下文定义的。

然而,实际上,这二个都是调用的同一个对象,不同的是:HttpRuntime下的除了WEB中可以使用外,非WEB程序也可以使用。

而HttpContext则只能用在WEB中。因此,在可能的情况下,我们尽可能使用HttpRuntime(然而,在不同应用程序之间如何调用也是一个问题)。

问题三:多线程下使用Html转码问题

多线程下使用HttpContext.Current.Server.HtmlEncode(Htmlstring)转码HttpContext.Current为null,解决办法如下:

HttpUtility.HtmlEncode(Htmlstring)

总之,HttpContext不是万能的,当多线程调用,或是用机器模拟调用时,此时是没有HttpContext上下文的。

详细讲解可以看下这篇文章 http://www.cnblogs.com/fish-li/archive/2011/08/21/2148640.html#_label4

转载于:https://www.cnblogs.com/jinhaoObject/p/5342342.html

多线程获取不到HttpContext相关推荐

  1. 获取python脚本的返回值_Python多线程获取返回值代码实例

    这篇文章主要介绍了Python多线程获取返回值代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在使用多线程的时候难免想要获取其操作完的返回值 ...

  2. python教程app 小米应用商店_Python爬虫过程解析之多线程获取小米应用商店数据...

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于IT共享之家 ,作者IT共享者 前言 小米应用商店给用户发现最好的安卓应用和游戏,安 ...

  3. 使用python多线程获取代理IP(代理IP池,附源码)

    @[TOC]使用python多线程获取代理IP(代理IP池,附源码) 代理IP池 都说现在是大数据的时代,大多数的厂商会特别的注重自己家的数据安全问题,但同时,也有着许多的行业是需要大数据来做支撑的, ...

  4. mfc怎么获取进程的线程数_Python多线程获取小米应用商店App,看看我是怎么做到的

    一.[项目背景] 小米应用商店给用户发现最好的安卓应用和游戏,安全可靠,可是要下载东西要一个一个的搜索太麻烦了.而且速度并不是很快. 今天小编就教大家利用多线程爬取小米应用商店的游戏模块,快速获取我们 ...

  5. spring多线程获取不到bean_刚面完的字节跳动java研发面试题整理(含答案):线程+MySQL+Spring+JVM...

    作者:花名提莫 出自:CSDN 原文:blog.csdn.net/qq_41770757/article/details/108502292?utm_medium=distribute.pc_feed ...

  6. 小米手机 开发app python_一篇文章教会你用Python多线程获取小米应用商店App

    [一.项目背景] 小米应用商店给用户发现最好的安卓应用和游戏,安全可靠,可是要下载东西要一个一个的搜索太麻烦了.而已速度不是很快. 今天用多线程爬取小米应用商店的游戏模块.快速获取. [二.项目目标] ...

  7. python socket多线程 获取朋友列表_python socket多线程通讯实例分析(聊天室)

    本文实例讲述了python socket多线程通讯方法.分享给大家供大家参考,具体如下: #!/usr/bin/evn python """ 这是一个Socket+多进程 ...

  8. python socket多线程 获取朋友列表_python中的(多线程)套接字列表/数组

    我对python有点陌生.我正在尝试在一个程序中创建和使用一个套接字列表/数组.所以我声明了一个数组,如下所示:myCSocks = ['CSock1', 'CSock2', 'CSock3', 'C ...

  9. 多线程下HttpContext.Current 的问题

    在项目中需要记录文本日志,为了加快响应速度所以用到了多线程. 但是以前的方法是不支持多线程的,程序运行错误. 追踪代码发现提示HttpContext为空. 1.HttpContext.Current表 ...

  10. 获取摩拜单车在地区的车辆python多线程实现

    通过微信小程序(摩拜),填写请求头,数据,post方式传递给服务器获取response 反反爬虫:useragent轮转(手机useragent).代理ip.休眠0.1s 代码分为两部分:多线程获取代 ...

最新文章

  1. Python(39)_选出列表中的大于66的数字放在字典中
  2. svn php改客户端密码_记录VisualSVNServer配置在线密码修改功能
  3. 窗口,视图,视图控制器和UIKit基础-IOS开发
  4. 国土空间规划师提升指南
  5. Ubuntu Docker 安装
  6. java 多线程 扫描,多线程扫描文件夹耗时方法分析
  7. 经典同步问题一——生产者和消费者问题
  8. 微信刷投票软件手机版、微信免费刷票软件建立的原理解析
  9. MATLAB 基础教程:编程习惯
  10. 家用台式计算机安装的软件,爱福窝家庭装修设计软件
  11. 如何使用电脑的切屏快捷键
  12. java一元二次方程用if_用javascript写一个求一元二次方程的页面 用JAVA写一个求解一元二次方程的类...
  13. Android Bluetooth架构
  14. python遇到错误跳过_python 如何跳过异常继续执行
  15. WEB前端大作业-速拍摄影服务响应式网页模板(HTML JS CSS))
  16. 计算机配置价格对比,硬件配置、价格对比
  17. 源码安装postgresql9.5.1
  18. 网上做什么挣钱?7个能赚钱的项目,个个都能发财!
  19. 【决策树算法】泰坦尼克号乘客生存预测
  20. 荷月区块链供应链金融平台系统入选2020区块链技术创新成果

热门文章

  1. 【GDB调试学习笔记】 Makefie上
  2. 【Git/Github学习笔记】ubuntu系统下使用git命令与windows下的差别
  3. 英文字母信息熵与冗余度计算Python实现
  4. 神经网络工具箱——nn.funtional、初始化策略
  5. JS学习总结(14)——Events事件
  6. ArcGIS 判断坐标系是否正确
  7. python PPT学习资料分享
  8. File类的一些方法测试
  9. Android水平仪实训报告,测量实训报告范文3篇
  10. FFmpeg总结(五)AV系列结构体之AVCodec、AVCodecParameters、AVCodecParser、AVCodecParserContext、AVCodecDescriptor