zoukankan      html  css  js  c++  java
  • [开发笔记]-多线程异步操作如何访问HttpContext?

    如何获取文件绝对路径?

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

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

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

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

    异步调用中如何访问HttpContext?

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

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

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

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

  • 相关阅读:
    Angular 中使用第三方模块 axios 请求数据
    angular 创建服务
    Promise和RxJS处理异步对比
    ES6中的迭代器(Iterator)和生成器(Generator)
    async await
    Ajax分析
    JSTL
    EL
    Spring-常用依赖及配置
    Spring-AOP的三种方式
  • 原文地址:https://www.cnblogs.com/babycool/p/3749812.html
Copyright © 2011-2022 走看看