HttpContext请求上下文对象

一、HttpContext概述

  HttpContext基于HttpApplication的处理管道,由于HttpContext对象贯穿整个处理过程,所以,可以从HttpApplication处理管道的前端将状态数据传递到管道的后端,完成状态的传递任务。

  HttpContext的生命周期从服务器接收的HTTP请求开始到反应发送回客户端结束。

  在WebForm或类库(包括MVC)项目中,通过Current静态属性,就能够获得HttpContext的对象。

  HttpContext context = HttpContext.Current;

  如果是在Asp.net MVC的Controller中,通过this.HttpContext;就能获取到HttpContextBase对象。

  HttpContextBase context = this.HttpContext;

  如果是在MVC视图中可以这样得到:

  @Html.ViewContext.HttpContext

  在MVC中是HttpContextBase在WebForm中是HttpContext。

  另外,还有些地方有人可能会有些困惑,因为貌似HttpContext中有很多对象在Page中也有,例如Request,Response,Cache,Session等等。它们之间有什么关系呢?在这里我们用Session、Request来进行说明。

  新建一个WebForm程序,输入代码如下:

        protected void Page_Load(object sender, EventArgs e)
        {
            HttpContext context = HttpContext.Current;
            context.Session.Add("1","刘备");
            Response.Write(Page.Session["1"]);      //输出刘备
            Response.Write(object.ReferenceEquals(context.Session, Page.Session));  //输出 True 表明这是同一个对象
            Response.Write(object.ReferenceEquals(context.Request, Page.Request));
        }

  输出如下:

  

  这用不着多说了,HttpContext与Page里的对象是同一个对象。HttpContext之所以也可以获取只是为了方便在类库项目中轻易获得这些请求对象。

二、HttpContext常用属性

  HttpContext常用属性:

名称 说明
Application 为当前 HTTP 请求获取 HttpApplicationState 对象。
Cache 获取当前应用程序域的 Cache 对象。
Current 为当前 HTTP 请求获取或设置 HttpContext 对象。
CurrentHandler 获取表示当前正在执行的处理程序的 IHttpHandler 对象。
Handler 获取或设置负责处理 HTTP 请求的 IHttpHandler 对象。
Items 获取可用于在 HTTP 请求过程中在 IHttpModule 接口和 IHttpHandler 接口之间组织和共享数据的键/值集合。
PreviousHandler 获取父处理程序的 IHttpHandler 对象。
Profile 获取当前用户配置文件的 ProfileBase 对象。
Request 为当前 HTTP 请求获取 HttpRequest 对象。
Response 为当前 HTTP 响应获取 HttpResponse 对象。
Server 获取提供用于处理 Web 请求的方法的 HttpServerUtility 对象。
Session 为当前 HTTP 请求获取 HttpSessionState 对象。
SkipAuthorization 获取或设置一个值,该值指定 UrlAuthorizationModule 对象是否应跳过对当前请求的授权检查。
Timestamp 获取当前 HTTP 请求处理请求的时间点

  对于以上这一个类,写不了什么DEMO。因为全部都是返回对象,要深入研究Asp.net,关键是要深入了解里面返回的这些对象。

        protected void Page_Load(object sender, EventArgs e)
        {
            HttpContext context = HttpContext.Current;
            context.Items.Add("kk","通过context存参!");
        }

  HttpContext的Current属性很重要,这个属性让你能够在任何地方找到它。

  如果希望提供一些静态属性,并且,只希望与一次请求关联,那么建议借助HttpContext.Items的实例属性来实现。

三、HttpContext常用方法

  HttpContext常用方法:

名称 说明
AddError 将异常添加到当前 HTTP 请求的异常集合中。
ClearError 清除当前 HTTP 请求的所有错误。
GetGlobalResourceObject 已重载。 获取应用程序级别的资源。
GetLocalResourceObject 已重载。 获取页级别的资源。
GetSection 获取当前应用程序的默认配置的指定配置节。
RemapHandler 用于为请求指定处理程序。
RewritePath 重写路径,以便后续的Asp.net以为这是才是真正的地址。RewritePath用在无 Cookie 会话状态中。

  示例:

        public ActionResult Index()
        {
            HttpContextBase context = this.HttpContext;
            context.RewritePath("1.html");      //重写url方法,以便后续的Asp.net以后这个是实际的请求地址
            Response.Write(context.Request.Url.AbsolutePath);
            return View();
        }

  输出:

  

HttpContext请求上下文对象,布布扣,bubuko.com

时间: 2024-12-22 09:57:23

HttpContext请求上下文对象的相关文章

.net学习笔记----HttpContext请求上下文

一.HttpContext概述 HttpContext基于HttpApplication的处理管道,由于HttpContext对象贯穿整个处理过程,所以,可以从HttpApplication处理管道的前端将状态数据传递到管道的后端,完成状态的传递任务. HttpContext的生命周期从服务器接收的HTTP请求开始到反应发送回客户端结束. 在WebForm或类库(包括MVC)项目中,通过Current静态属性,就能够获得HttpContext的对象. HttpContext context =

[译] ASP.NET 生命周期 – ASP.NET 上下文对象(七)

使用 HttpRequest 对象 HttpRequest 对象描述的是一个正在被处理的 HTTP 请求.下表列举了 HttpRequest 中的属性,它们提供了当前请求的相关信息(HttpRequest 类定义了一些方法和属性,我们会逐步讲解当中的一些属性). 表 1 – HttpRequest 类中属性 名称 描述 AcceptTypes 返回一个可以被浏览器接受的 MIME 类型的字符串数组. Browser 返回一个可以用来描述浏览器功能的 HttpBrowserCapabilities

flask基础之AppContext应用上下文和RequestContext请求上下文(六)

前言 应用上下文和请求上下文存在的目的,官方文档讲的很清楚,可参考: http://www.pythondoc.com/flask/appcontext.html 应用上下文对象在没有请求的时候是可以单独存在的,但是请求上下文对象只有在收到请求后才会被创建.请求处理和应用上下文和请求上下文的关系是: 接收请求-->创建请求上下文-->请求上下文入栈-->创建该请求的应用上下文-->应用上下文入栈-->处理逻辑-->请求上下文出栈-->应用上下文出栈 系列文章 fl

EF上下文对象创建之线程内唯一

在一次请求中,即一个线程内,若是用到EF数据上下文对象,就创建一个,那么会造成数据混乱,每次创建的对象执行相应的数据库操作,此同时,其他的EF对象内获得的数据可能已经是“过期”的了.即这个数据已经变动过.这就是数据混乱,为了解决这个问题,关键就是对象的创建问题. 这里首先想到单例模式,不过在这里,不适合用,原因是使用单例模式,会使EF对象得不到及时的资源释放. 第二种方式即保证在线程内对象唯一,如何保证呢,通过微软ASP机制的HttpContext对象,这个对象在线程中是唯一的,所以我们在Htt

[译] ASP.NET 生命周期 – ASP.NET 上下文对象(五)

ASP.NET 上下文对象 ASP.NET 提供了一系列对象用来给当前请求,将要返回到客户端的响应,以及 Web 应用本身提供上下文信息.间接的,这些上下文对象也可以用来回去核心 ASP.NET 框架特性. 上下文对象提供了应用,当前请求,与当前请求相关联的响应的信息.也提供了对多数重要的 ASP.NET 平台服务的访问,比如安全与状态数据.我们可以在 MVC 框架的 controllers 和 views 中使用上下文对象来根据当前的请求或者应用状态数据来调整我们应用的响应.在创建模块或者处理

IOC容器特性注入第七篇:请求上下文作用域

Ninject的对象作用域: Transient .InTransientScope() 每次调用创建新实例. Singleton .InSingletonScope() 单例,仅创建一个实例. Thread .InThreadScope() 每一个线程创建一个实例. Request .InRequestScope() 每当Web请求发起时创建一个实例,结束请求时释放实例 由于我们使用的web开发,所以一般都是InReuqestScope()的作用域,Kooboo对Ninject的作用域没有用,

EF上下文对象线程内唯一性与优化

在一次请求中,即一个线程内,若是用到EF数据上下文对象,就创建一个,这也加是很多人的代码中习惯在使用上下文对象时,习惯将对象建立在using中,也是为了尽早释放上下文对象, 但是如果有一个业务逻辑调用了多个dal层的方法,交互数据库多次,这样效率会低一些,而且在使用EF的情况下,我们通常把SaveChange这个方法提到业务逻辑层(下文中会提到),不保证同一个业务逻辑使用的是同一个上下文对象,事务,工作单元模式将无法实现.而且可能造成数据混乱,每次创建的对象执行相应的数据库操作,与此同时,同一次

13.4 上下文对象

有关应用程序状态的详情.处理的请求以及构建的响应信息全部通过上下文对象来获取.下面将介绍用于提供上下文的类:HttpContext. HttpApplication,HttpRequest,HttpResponse类,所有这些类均位于System.Web. 13.4.1 HttpContext Encapsulates all HTTP-specific information about an individual HTTP request. HttpContext.用于从头到尾跟踪请求的状态

flask快速入门笔记三_上下文对象:Flask核心机制

首先声明:内容大部分来自huizhiwang,只是单纯记笔记. 1 请求 :WSGI WSGI,全称 Web Server Gateway Interface,或者 Python Web Server Gateway Interface ,是为 Python 语言定义的Web服务器和Web应用程序之间的一种简单而通用的接口. WSGI将Web服务分成两个部分:服务器和应用程序.WGSI服务器只负责与网络相关的两件事:接收浏览器的 HTTP请求.向浏览器发送HTTP应答:而对HTTP请求的具体处理