我在类中加了一句private static readonly System.Web.UI.Page page = new System.Web.UI.Page();
发现静态成员可以通过page访问到Server,Session,Application,这样的效率高吗,可行不可行?
总觉得为了访问Server,Session,Application还要创建一个page对象有点浪费如果我的方法不可行,有什么好的解决方法呢

解决方案 »

  1.   

    HttpContext.Current
    HttpRuntime
    HttpUtility
    参考一下
      

  2.   

    我在类中加了一句private static readonly System.Web.UI.Page page = new System.Web.UI.Page(); 
    发现静态成员可以通过page访问到Server,Session,Application,这样的效率高吗,可行不可行? 这样是不可行的,因为你new的Page不是你当前访问的Page实例,明白?方法有2:
    1、给你的静态方法添加参数:Page
    如:static string test(Page pag){}
    在ASPX里调用:test(this);2、使用System.Web.HttpContext.Current
    如:System.Web.HttpContext.Current.Server
    System.Web.HttpContext.Current.Response
      

  3.   

    你试试在你的静态方法里输出一个东西
    比如
    page.Response.Write("aaa");
    你看这个aaa能不能输出?
      

  4.   

    Response对象不能用是理所当然的,每个网页只对应它自己的输出流Session就不一样了,它虽然也是Page的非静态成员,但实际上值是公用的
      

  5.   

    HttpContext.Current.Session
    或在类中定义Page对象属性
      

  6.   

    HttpContext.Current是指调用它的Page对象的Context吗
      

  7.   

    看来你也明白啊,你说的基本没错。HttpContext.Current表示当前的Http请求,你可以理解为调用这个方法的Page对象
      

  8.   


    直接在 HttpContext.Current.Session["test"]就引用了
    静态方法前加[WebMethod(EnableSession = true)]注释