码迷,mamicode.com
首页 > 编程语言 > 详细

[开发笔记]-多线程异步操作如何访问HttpContext?

时间:2014-05-26 01:32:29      阅读:302      评论:0      收藏:0      [点我收藏+]

标签:style   class   blog   c   tar   ext   

如何获取文件绝对路径?

在定时器回调或者Cache的移除通知中,有时确实需要访问文件,然而对于开发人员来说, 他们并不知道网站会被部署在哪个目录下,因此不可能写出绝对路径, 他们只知道相对于网站根目录的相对路径,为了定位文件路径,只能调用HttpContext.Current.Request.MapPath或者 HttpContext.Current.Server.MapPath来获取文件的绝对路径。 如果HttpContext.Current返回了null,那该如何如何访问文件?

其实方法并非MapPath一种,我们可以访问HttpRuntime.AppDomainAppPath获取网站的路径,然后再拼接文件的相对路径即可:

bubuko.com,布布扣

看到没:图片中HttpContext.Current显示的是 null ,所以您要是再调用MapPath,就必死无疑!

在此我也奉劝大家一句:尽量不要用MapPath,HttpRuntime.AppDomainAppPath才是更安全的选择。

异步调用中如何访问HttpContext?

前面我还提到在APM模式下的异步完成回调时,访问HttpContext.Current也会返回null,那么此时该怎么办呢?

答案有二种:
1. 在类型中添加一个字段来保存HttpContext的引用(异步开始前)。
2. 将HttpContext赋值给BeginXXX方法的最后一个参数(object state)

建议优先选择第二种方法,因为可以防止以后他人维护时数据成员被意外使用。

 

内容转载自:  HttpContext.Current并非无处不在 - Fish Li - 博客园

 

 

[开发笔记]-多线程异步操作如何访问HttpContext?,布布扣,bubuko.com

[开发笔记]-多线程异步操作如何访问HttpContext?

标签:style   class   blog   c   tar   ext   

原文地址:http://www.cnblogs.com/babycool/p/3749812.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!