zoukankan      html  css  js  c++  java
  • 关于WCF访问跨越站点获取文件路径的AppDomain方法区别与HttpContext

    第一:跨域,获取其他站点文件路径的方法:System.AppDomain.CurrentDomain.BaseDirectory

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

    答案:System.AppDomain.CurrentDomain.BaseDirectory

    第三:安全使用 HttpContext 

    HttpContext context = HttpContext.Current;
        if( context != null ) {
            // 能运行到这里,就肯定是在处理ASP.NET请求,我们可以放心地访问Request的所有数据
            sb.AppendLine("Url:" + context.Request.RawUrl);
    
            // 还有记录什么数据,您自己来实现吧。
        }
    就是一个判断,解决了一些为null 的问题,所以请忘记下面这类不安全的写法吧

    第四:总结HttpContext: 当前线程是指与【当前请求】相关的线程。

    1. 定时器的回调。
    2. Cache的移除通知。
    3. APM模式下异步完成回调。
    4. 主动创建线程或者将任务交给线程池来执行。 

    在1,2,3情况中,访问HttpContext.Current将会返回 null 。

    3.的解决方案答案有二种:

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

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

    4.本身不是当前线程,所以不必讨论。

    ths:http://www.cnblogs.com/fish-li/archive/2013/04/06/3002940.html


  • 相关阅读:
    Centos7 KVM启用嵌套虚拟化
    CentOS 桥接网卡配置
    centos iso镜像自动挂载
    git status没有颜色提示
    virt-install 安装系统和启动虚机
    Python 源代码代码打包成 whl 文件
    存储池与存储卷,使用virt-install创建虚拟机
    ftp 搭建 centos 源
    git 生成并添加 SSH key
    linked-list-cycle leetcode C++
  • 原文地址:https://www.cnblogs.com/lei2007/p/3045757.html
Copyright © 2011-2022 走看看