我在一个类中调用以下代码..string fileName = HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["log4net_ConfigFile"]);经调试..ConfigurationManager.AppSettings["log4net_ConfigFile"] 能取到值..运行到HttpContext.Current.Server.MapPath 中发现  HttpContext.Current 对像就为空了..这个代码放到页面上可以运行的好好的...能不能那位出来帮我说一下为什么..是不是他们的请求方式有区别...

解决方案 »

  1.   

    ConfigurationManager.AppSettings["log4net_ConfigFile"].ToString();
      

  2.   

    调试有的情况会这样。
    不妨用response.write(ConfigurationManager.AppSettings["log4net_ConfigFile"].trim())
    查看运行结果。
      

  3.   

    添加web引用
    System.Web.HttpContext.Current.Server.MapPath( "~/")可以使用
      

  4.   

    直接.ConfigurationManager.ConnectionString[""]
      

  5.   

    呃,楼主是在页面代码中使用么?如果是在console之类的程序中使用,httpcontext.current就应该是空的。httpcontext是.net在处理页面请求的时候,自动实例化的。
      

  6.   

        把代码放到一个aspx页面的后面代码中就行了
      

  7.   

    楼主你是在类库里面写这个的吧?如果是,你要在web引用中,加上System.Web,然后再在cs中加上:using System.Web,这样就可以了
      

  8.   

    这个代码放到页面上可以运行的好好的...能不能那位出来帮我说一下为什么..是不是他们的请求方式有区别...你把代码放在了哪里?放在页面上才能ok的,因为有:
    HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["log4net_ConfigFile"]);HttpContext.Current属性是:当前 HTTP 请求获取或设置 HttpContext 对象。如果没有发起请求,怎么能获取得到!当然是null!
      

  9.   

    谢谢..我想通了...哈哈...我打这个类放在底层用.底层调用时有的时候没有HTTP请求.