天天看点

ASP.NET多线程下使用HttpContext.Current为null解决方案

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

  当我们使用httpcontext.current.server.mappath(strpath)获取绝对路径时httpcontext.current为null,解决办法如下: 

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

 多线程下使用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

继续阅读