天天看點

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

繼續閱讀