zoukankan      html  css  js  c++  java
  • HttpContext

    http://msdn.microsoft.com/zh-cn/library/system.web.httpcontext(VS.80).aspx    msdn

    以前的时候,自己读了一篇关于HttpContext的文章,直到今天我才知道自己以前原来都被它误导了,使我误解为HttpContext是存在整个用户请求的生命周期,而实则上只存在单个的请求中

    引用一篇文章如下,希望对大家有所帮助

    一、介绍
        ASP.NET提供了很多变量来管理状态:比如application state,session state,view state等。这里介绍一种通过HttpContext类的Items(属性) 集合来保存Http状态。
        HttpContext对象只针对一个单一的http请求。这个类的属性还有Request对象、Response对象、Session对象等。你可以通过
                 Context.Items["MyObject"] = new object();
    或           object o = Context.Items["MyObject"];
    来set或get 它。Items包含了key-value形式的哈希表对象。

    二、主要用法
    1、在两个表单之间传递数据
    看下面的代码:

    对于WebForm1:

    private void Page_Load(object sender, System.EventArgs e)
    {
       ArrayList list = new ArrayList(4);
       list.Add("This list ");
       list.Add("is for ");
       list.Add("WebForm2 ");
       list.Add("to see. ");

       Context.Items["WebForm1List"] = list;

       Server.Transfer("WebForm2.aspx");
    }

    对于WebForm2:

    private void Page_Load(object sender, System.EventArgs e)
    {
       ArrayList list = Context.Items["WebForm1List"] as ArrayList;

       if(list != null)
       {
          foreach(string s in list)
          {
             Response.Write(s);
          }
       }
    }

    在WebForm1的页面加载过程中,通过Server.Transfer方法,将WebForm1的状态传递到了WebForm2,WebForm2可以得到它,并作一些相应的处理。用法1也可以用Session来做。

    2、截获Http请求并作特殊处理
    主要是用在Application_BeginRequest方法里。Application_BeginRequest方法在global.asax.cs里定义。你可以在Http请求刚刚开始的时候,截获他,做一些特殊的处理。这里你不能用Session来做,因为此时Session对象还没有被建立。

    利用Context.Item集合,你可以在Http请求的整个生命期,通过HttpModules, HttpHandlers, Webforms, and Application 事件。

  • 相关阅读:
    异常处理
    添加headers头文件反爬虫
    爬百思不得姐的视频(爬多页时for的循环)
    图片爬取百思不得姐(正则的取法,下载的方法,%s的用法)
    创建一个网页
    集合幂级数总结
    题解(新)
    JOI汉堡肉
    NOIO 2020 r2 总结
    长链剖分
  • 原文地址:https://www.cnblogs.com/barney/p/1246626.html
Copyright © 2011-2022 走看看