您现在的位置是:网站首页> 编程资料编程资料
ASP.NET中HttpContext对象下的属性介绍_基础应用_
2023-05-24
1228人已围观
简介 ASP.NET中HttpContext对象下的属性介绍_基础应用_
一、HttpContext概述:
HttpContext封装关于单个HTTP请求的所有HTTP特定信息。
HttpContext基于HttpApplication的处理管道,由于HttpContext对象贯穿整个处理过程,所以,可以从HttpApplication处理管道的前端将状态数据传递到管道的后端,完成状态的传递任务。
HttpContext类它对Request、Respose、Server等等都进行了封装,并保证在整个请求周期内都可以随时随地的调用;为继承 IHttpModule 和 IHttpHandler 接口的类提供了对当前 HTTP 请求的 HttpContext 对象的引用。
当我们创建一个一般处理程序Handler.ashx时,我们可以在文件中看到这一句:public void ProcessRequest (HttpContext context);
1、访问方式
1、在WebForm或类库(包括MVC)项目中,通过Current静态属性,就能够获得HttpContext的对象。
HttpContext context = HttpContext.Current;
2、如果是在Asp.net MVC的Controller中,通过this.HttpContext就能获取到HttpContextBase对象。
HttpContextBase context = this.HttpContext;
3、如果是在MVC视图中可以这样得到:
@Html.ViewContext.HttpContext
2、成员对象:
- Application:为当前 HTTP 请求获取HttpApplicationState 对象。
- Cache:获取当前应用程序域的Cache 对象。
- Request:为当前 HTTP 请求获取HttpRequest 对象。
- Response:获取当前 HTTP 响应的HttpResponse 对象。
- Server:获取提供用于处理 Web 请求的方法的HttpServerUtility 对象。
- Session:为当前 HTTP 请求获取HttpSessionState 对象。
- User:为当前 HTTP 请求获取或设置安全信息。
二、Application属性:保存所有用户共用的信息
Application属性为当前 HTTP 请求获取 HttpApplicationState 对象。
Application用来保存所有用户共用的信息。
在Asp时代,如果要保存的数据在应用程序生存期内不会或者很少发生改变,那么使用Application是理想的选择。但是在Asp.net开发环境中我们把类似的配置数据放在Web.config中。
HttpApplicationState类可以通过Page.Application访问。
如果要使用Application 要注意的是所有的写操作都要在Application_OnStart事件中完成(global.Asax),尽管可以使用Application.Lock()避免了冲突,但是它串行化了对Application的请求,会产生严重的性能瓶颈。
不要使用Application保存大数据量信息。
global.asax:
void Application_OnStart() { Application["UserID"] = "test"; String UserName = Application["UserID"].ToString(); //修改 Application.Lock(); Application["count"] = (Application["UserID"] as int) + 1; Application.Unlock(); }三、Cache属性:当前应用程序域服务端缓存对象
Cache属性获取当前应用程序域的 Cache 对象。Cache为服务端缓存对象。
Cache和Application:用于服务端,整个应用程序、所有用户拥有。
Cache用于在Http请求期间保存页面或者数据, Cache的使用可以大大的提高整个应用程序的效率,它允许将频繁访问的服务器资源存储在内存中,当用户发出相同的请求后,服务器不是再次处理而是将Cache中保存的数据直接返回给用户,
可以看出Cache节省的是时间—服务器处理时间。
Cache实例是每一个应用程序专有的,其生命周期==该应用程序周期,应用程序重启将重新创建其实例
HttpContext.Cache 是对底层HttpRuntime.Cache 缓存类的封装,由于封装到了 HttpContext ,局限于只能在 HttpContext 下使用,即只能用于 Web 应用。
所以在可以的条件,尽量用底层的HttpRuntime.Cache ,而不是用HttpContext.Cache 。
cache一般用于数据较固定,访问较频繁的地方,例如在前端进行分页的时候,初始化把数据放入缓存中,然后每次分页都从缓存中取数据,这样减少了连接数据库的次数,提高了系统的性能。
1.创建Cache
Cache.Insert(string key,object value,CacheDependency dependencies,DateTime absoluteExpiration,TimeSpan slidingExpiration)
Cache["ID"] = "yiner"; //或者 Cache.Insert("ID", "test");//可以缓存任何对象,比如:DataTable //缓存依赖 CacheDependency cachedep = new CacheDependency(Server.MapPath("~/App_Data/data.xml")); Cache.Insert("ID", "test", cachedep);//当data.xml更改时,该缓存自动删除 //设置过期时间:后两个参数依次为:过期的绝对时间、过期的相对时间 Cache.Insert("ID", "test", null, DateTime.Now.AddMinutes(10), Cache.NoSlidingExpiration); Cache.Insert("ID", "test", null, Cache.NoAbsoluteExpiration, new TimeSpan(0, 10, 0));2.销毁Cache
Cache.Remove("ID");3.调用Cache
例如你存的是一个DataTable对象,调用如下:
DataTable finaltable = Cache["ID"] as DataTable; //或 DataTable finaltable = (DataTable)Cache.Get("ID")四、Request属性
Request属性为当前 HTTP 请求获取 HttpRequest 对象。
在服务器收到客户端的请求后,HttpRuntime将会创建一个HttpRequest对象的实例,这个实例就是我们在页面中常用的Request。
Request属性可通过HttpContext.Current或Page对象来访问。
在客户端的请求内容中,主要包含三部分内容。请求行,请求头部,请求主体。
1、HttpRequest 对象的属性
- Request.Headers:获取 HTTP 头集合:(结果略)
- Request.RequestType:获取客户端的请求方式,即Get或Post:GET
- Request.HttpMethod:获取客户端使用的 HTTP 数据传输方法(如 GET、POST 或 HEAD):GET
- Request.AcceptTypes:获取客户端支持的 MIME 接受类型的字符串数组:*/*
- Request.RawUrl:获取当前请求的原始URL:/WebForm1.aspx?id=a,RawUrl不包含主机信息和端口号
- Request.Url:获取有关当前请求的 URL 的信息:http://localhost:10693/WebForm1.aspx?id=a
- Request.UrlReferrer:获取有关客户端上次请求的 URL 的信息,该请求链接到当前的 URL:
- Request.FilePath:获取当前请求的虚拟路径:/WebForm1.aspx
- Request.CurrentExecutionFilePath:获取当前请求的虚拟路径:/WebForm1.aspx
- Request.Path:获取当前请求的虚拟路径:/WebForm1.aspx
- Request.AppRelativeCurrentExecutionFilePath:获取应用程序根的虚拟路径,并通过对应用程序根使用波形符 (~) 表示法(例如,以“~/page.aspx”的形式)使该路径成为相对路径:~/WebForm1.aspx
- Request.PhysicalPath:获取与请求的 URL 相对应的物理文件系统路径:E:\WebApplication1\WebApplication1\WebForm1.aspx
- Request.Files:获取客户端发送的 文件的集合:HttpFileCollection对象
- Request.Form:获取窗体变量集合:HtmlForm控件的Method的默认值post,表单数据以HTTP标头形式发送到Server
- Request.QueryString:获取 HTTP 查询字符串变量集合:id=a;HtmlForm控件的Method的默认值get,表单数据附在网址后。
- Request.ServerVariables:获取 Web 服务器变量的集合:Request.ServerVariables["Local_ADDR"] :Server地址 ;Request.ServerVariables["Remote_ADDR"]:客户端地址。
- Request.Cookies :Cookies 项的集合HttpCookieCollection对象。
- Request.Params:获取QueryString、Form、ServerVariables和 Cookies 项的组合集合。(结果略)
- Request.ContentEncoding:获取或设置实体主体的字符集:System.Text.UTF8Encoding
- Request.ContentLength:指定客户端发送的内容长度(以字节计):0
- Request.ContentType:获取或设置传入请求的 MIME 内容类型:
- Request.Browser:获取或设置有关正在请求的客户端的浏览器功能的信息:(见下面详解)
- Request.UserAgent:获取客户端浏览器的原始用户代理信息:(结果略)
- Request.UserHostAddress:获取远程客户端的IP主机地址:127.0.0.1
- Request.UserHostName:获取远程客户端的DNS名称:127.0.0.1
- Request.UserLanguages:获取客户端语言首选项的排序字符串数组:zh-cn
2、Request.Browser对象的属性
Request对象的Browser属性来获取客户端浏览器的一些信息:
- Request.Browser.Browser:获取由浏览器在 User-Agent 请求标头中发送的浏览器字符串:IE
- Request.Browser.MajorVersion:获取浏览器的主(整数)版本号:8
- Request.Browser.MinorVersion:获取浏览器的次(即小数)版本号:0
- Request.Browser.ActiveXControls:指示浏览器是否支持 ActiveX 控件:True
- Request.Browser.Cookies:示浏览器是否支持 Cookie:True
- Request.Browser.EcmaScriptVersion:获取浏览器支持的 ECMAScript 的版本号:1.2
- Request.Browser.W3CDomVersion:获取浏览器支持的万维网联合会 (W3C) XML 文档对象模型 (DOM) 的版本:1.0
五、Response属性:HTTP 响应信息
Response属性获取当前 HTTP 响应的 HttpResponse 对象。
封装来自 ASP.NET 操作的 HTTP 响应信息。
在代码中,HttpResponse的对象引用由关键字Response。 例如,Response.Clear()是指HttpResponse.Clear方法。
Page类具有名为的属性Response的当前实例。
HttpResponse类的方法和属性通过HttpApplication、 HttpContext、Page、UserControl类的Response的属性进行公开。
1、属性
- BufferOutput:获取或设置一个值,该值指示是否缓冲输出并在处理完整个页之后发送它。
- Cache:获取网页的缓存策略(例如:过期时间、保密性设置和变化条款)。
- Cookies:获取响应 cookie 集合。
- Filter:获取或设置一个包装筛选器对象,该对象用于在传输之前修改 HTTP 实体主体。
- Output:启用到输出 HTTP 响应流的文本输出。
- OutputStream:启用到输
相关内容
- .Net行为型设计模式之解释器模式(Interpreter)_基础应用_
- .Net行为型设计模式之备忘录模式(Memento)_基础应用_
- .Net行为型设计模式之访问者模式(Visitor)_基础应用_
- .Net行为型设计模式之职责链模式(Chain of Responsibility)_基础应用_
- .net任务调度框架FluentScheduler简介_实用技巧_
- 使用grpcui测试ASP.NET core的gRPC服务_实用技巧_
- .NET6环境下实现MQTT通信及详细代码演示_实用技巧_
- .net任务调度框架Hangfire简介_实用技巧_
- Asp.net core程序中使用微软的依赖注入框架_实用技巧_
- ASP.NET Core通过Microsoft.AspNetCore.App元包简化程序集引用_实用技巧_
