zoukankan      html  css  js  c++  java
  • 多线程获取不到HttpContext

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

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

    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

  • 相关阅读:
    简单多线程创建
    ajax 实现局部页面更新
    基础分页查询解题思路
    cookie实现登录时间记录
    servlet过滤器
    jstl标签 URL智能寻找路径
    taglib遍历foreach循环list集合
    python之内置高阶函数
    python之lambda的使用
    python中的函数
  • 原文地址:https://www.cnblogs.com/jinhaoObject/p/5342342.html
Copyright © 2011-2022 走看看