ASP.NET中HttpContext对象下的哪些属性具体功能是什么?

2026-03-30 10:211阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计4223个文字,预计阅读时间需要17分钟。

ASP.NET中HttpContext对象下的哪些属性具体功能是什么?

目录

一、HttpContext概述

1.访问方式

2.成员对象:Application、Cache

二、Application属性

1.保存所有用户共用的信息

三、Cache属性

1.创建Cache

2.销毁Cache

3.调用Cache

目录
  • 一、HttpContext概述:
    • 1、访问方式
    • 2、成员对象:
  • 二、Application属性:保存所有用户共用的信息
    • 三、Cache属性:当前应用程序域服务端缓存对象
      • 1.创建Cache
      • 2.销毁Cache
      • 3.调用Cache
    • 四、Request属性
      • 1、HttpRequest 对象的属性
      • 2、Request.Browser对象的属性
    • 五、Response属性:HTTP 响应信息
      • 1、属性
      • 2、方法
    • 六、Server属性
      • 1、属性
      • 2、方法
      • 3、Server.Execute、Server.Transfer、Response.Redirect区别
    • 七、Session属性:每一个用户的专有信息
      • 1、配置Session
      • 2、操作Session:
    • 八、User属性

      一、HttpContext概述:

      HttpContext封装关于单个HTTP请求的所有HTTP特定信息。

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

      HttpContext类它对Request、Respose、Server等等都进行了封装,并保证在整个请求周期内都可以随时随地的调用;为继承 IHttpModule 和 IHttpHandler 接口的类提供了对当前 HTTP 请求的 HttpContext 对象的引用。

      当我们创建一个一般处理程序Handler.ashx时,我们可以在文件中看到这一句:public void ProcessRequest (HttpContextcontext);

      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 的信息: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:启用到输出 HTTP 内容主体的二进制输出。

      2、方法

      • AddCacheDependency(CacheDependency[]):将一组缓存依赖项与响应关联,这样,如果响应存储在输出缓存中并且指定的依赖项发生变化,就可以使该响应失效。
      • RemoveOutputCacheItem(String):从缓存中移除与默认输出缓存提供程序关联的所有缓存项。 此方法是静态的。
      • AddCacheItemDependencies(String[]):使缓存项的有效性依赖于缓存中的另一项。。
      • AddFileDependencies(String[]):将文件名数组添加到当前响应依赖的文件名集合中。
      • SetCookie(HttpCookie):更新 Cookie 集合中的一个现有 Cookie。因为 HttpResponse.SetCookie 方法仅供内部使用, 可以改为调用 HttpResponse.Cookies.Set 方法
      • AppendCookie(HttpCookie):将一个 HTTP Cookie 添加到内部 Cookie 集合。
      • AppendHeader(String, String):将 HTTP 头添加到输出流。
      • ClearHeaders():清除缓冲区流中的所有头。
      • Redirect(String, Boolean):将客户端重定向到新的 URL。 指定新的 URL 并指定当前页的执行是否应终止。
      • BinaryWrite(Byte[]):将二进制字符串写入 HTTP 输出流。
      • Write(String):将一个字符串写入 HTTP 响应输出流。
      • WriteFile(String):将指定文件的内容作为文件块直接写入 HTTP 响应输出流。
      • TransmitFile(String):将指定的文件直接写入 HTTP 响应输出流,而不在内存中缓冲该文件。
      • Clear():清除缓冲区流中的所有内容输出。
      • ClearContent():清除缓冲区流中的所有内容输出。
      • Flush():向客户端发送当前所有缓冲的输出。
      • End():将当前所有缓冲的输出发送到客户端,停止该页的执行,并引发 EndRequest 事件。
      • Close():关闭到客户端的套接字连接。

      六、Server属性

      在Asp.net WebForm中,Server属性获取提供用于处理 Web 请求的方法的 HttpServerUtility 对象。而在Asp.net MVC中,Server对象是HttpServerUtilityBase对象。

      通过Page.Server属性访问,提供用于对Web请求的Help方法。

      • MachineName:获取服务器的计算机名称。、
      • ScriptTimeout:获取和设置请求超时值(以秒计)。
      • Execute:在当前请求的上下文中(服务端中)执行指定资源的处理程序,然后将执行返回给调用它的页。
      • Transfer:终止当前页的执行,并为当前请求开始执行新页。
        • HtmlEncode/HtmlDecode:对要在浏览器中显示的HTML字符串进行编码。/对已被编码以消除无效 HTML 字符的字符串进行解码
        • UrlEncode/UrlDecode:编码/解码URL字符串,以便通过 URL 从 Web 上进行可靠的 HTTP 传输。
        • UrlPathEncode:对 URL 字符串的路径部分进行 URL 编码并返回编码后的字符串。
        • MapPath:返回与 Web 服务器上的指定虚拟路径相对应的物理文件路径。 该方法经常使用。将虚拟路径转换为服务器物理路径。

        context.Response.Write(context.Server.MapPath("/")); //输出 C:\Users\Administrator\Desktop\WebApplication1\WebApplication1\ //该方法经常用,将虚拟路径转换为物理路径 context.Response.Write("<div style='background-color:red'>HtmlEncode测试</div>"); //如果不编码,默认就是会被浏览器解析的 context.Response.Write(context.Server.HtmlEncode("<div style='background-color:red'>HtmlEncode测试</div>")); //经过编码之后 原样输出

        HttpUtility类由HttpServerUtility类在内部使用,HttpUtility类包含无法从Server访问的编码和解码实用工具方法,如:ParseQueryString()方法等。

        Response.Write("|Url:"+HttpUtility.UrlEncode("你好啊"));

        若要对 Web 应用程序之外的值进行编码或解码,请使用WebUtility类。

        3、Server.Execute、Server.Transfer、Response.Redirect区别

        • Server.Execute方法允许当前的ASPX页面执行一个同一Web服务器上的指定ASPX页面,当指定的ASPX页面执行完毕,控制流程重新返回原页面发出Server.Execute调用的位置。
        • Server.Transfer的跳转完全是在服务器端,浏览器根本不知道已经跳转了,因此路径显示的仍然是原路径。
        • Response.Redirect是客户端发送请求到服务器,服务器执行Response.Redirect之后,返回302,浏览器接收到请求后,再次发送一次请求到要跳转的URL.

        在网络状态较好的情况下,Redirect(url)方法效率最高!! 可重定向到同一台或非同一台服务器上的aspx或非aspx(html)资源。

        ASP.NET中HttpContext对象下的哪些属性具体功能是什么?

        Server.Transfer方法和Server.Execute方法最灵活!! 但只能转到同一Application目录下,也有可能导致不期望的结果发生。

        Server.Execute方法占用资源最多.

        七、Session属性:每一个用户的专有信息

        Session属性为当前 HTTP 请求获取HttpSessionState对象。

        Session用来保存每一个用户的专有信息。 HttpSessionState类通过HttpContext或Page对象的Session属性访问。一台客户机上多个浏览器窗口访问只有一个Session。

        Session的生存期是用户持续请求时间加上一段时间(一般是20分钟左右), Session超时或者被关闭将自动释放数据信息,由于用户停止使用应用程序之后它仍在内存中存留一段时间,因此这种方法效率较低。

        Session信息是保存在Web服务器内存中的,保存数据量可大可小。

        1、配置Session

        在Web.config中的 <system.web> </system.web>之间添加

        <sessionState mode="InProc"//InProc:保存到内存,Off;StateServer;SQLServer等 stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" //如果cookieless=true表示不用Cookie,用URL查询字符串传送会话ID。 timeout="20" />

        其中timeout是过期时间,如20分钟后超时。

        2、操作Session:

        //添加: Session["userName"] = "aaa"; //获取: if (Session["userName"] != null) { string str = Session["userName"].ToString(); } //清除某个Session Session["UserName"] = null; Session.Remove("UserName"); //清除全部Session Session.Clear();

        八、User属性

        User的属性提供对IPrincipal接口的属性和方法的编程访问。

        这个属性能让我们访问各种信息,包括用户是否已验证,用户的类型,用户名等等,我们还可以对该属性的功能进性扩展,以实现我们的要求。
        分配给HttpContext.User的对象必须实现IPrincipal接口,而Iprincipal定义的属性之一是Identity,它必须实现Iidentity接口。

        if (User.Identity.IsAuthenticated) { Page.Title = "Home page for " + User.Identity.Name; } else { Page.Title = "Home page for guest user."; }

        到此这篇关于ASP.NET中HttpContext对象的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持易盾网络。

        标签:

        本文共计4223个文字,预计阅读时间需要17分钟。

        ASP.NET中HttpContext对象下的哪些属性具体功能是什么?

        目录

        一、HttpContext概述

        1.访问方式

        2.成员对象:Application、Cache

        二、Application属性

        1.保存所有用户共用的信息

        三、Cache属性

        1.创建Cache

        2.销毁Cache

        3.调用Cache

        目录
        • 一、HttpContext概述:
          • 1、访问方式
          • 2、成员对象:
        • 二、Application属性:保存所有用户共用的信息
          • 三、Cache属性:当前应用程序域服务端缓存对象
            • 1.创建Cache
            • 2.销毁Cache
            • 3.调用Cache
          • 四、Request属性
            • 1、HttpRequest 对象的属性
            • 2、Request.Browser对象的属性
          • 五、Response属性:HTTP 响应信息
            • 1、属性
            • 2、方法
          • 六、Server属性
            • 1、属性
            • 2、方法
            • 3、Server.Execute、Server.Transfer、Response.Redirect区别
          • 七、Session属性:每一个用户的专有信息
            • 1、配置Session
            • 2、操作Session:
          • 八、User属性

            一、HttpContext概述:

            HttpContext封装关于单个HTTP请求的所有HTTP特定信息。

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

            HttpContext类它对Request、Respose、Server等等都进行了封装,并保证在整个请求周期内都可以随时随地的调用;为继承 IHttpModule 和 IHttpHandler 接口的类提供了对当前 HTTP 请求的 HttpContext 对象的引用。

            当我们创建一个一般处理程序Handler.ashx时,我们可以在文件中看到这一句:public void ProcessRequest (HttpContextcontext);

            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 的信息: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:启用到输出 HTTP 内容主体的二进制输出。

            2、方法

            • AddCacheDependency(CacheDependency[]):将一组缓存依赖项与响应关联,这样,如果响应存储在输出缓存中并且指定的依赖项发生变化,就可以使该响应失效。
            • RemoveOutputCacheItem(String):从缓存中移除与默认输出缓存提供程序关联的所有缓存项。 此方法是静态的。
            • AddCacheItemDependencies(String[]):使缓存项的有效性依赖于缓存中的另一项。。
            • AddFileDependencies(String[]):将文件名数组添加到当前响应依赖的文件名集合中。
            • SetCookie(HttpCookie):更新 Cookie 集合中的一个现有 Cookie。因为 HttpResponse.SetCookie 方法仅供内部使用, 可以改为调用 HttpResponse.Cookies.Set 方法
            • AppendCookie(HttpCookie):将一个 HTTP Cookie 添加到内部 Cookie 集合。
            • AppendHeader(String, String):将 HTTP 头添加到输出流。
            • ClearHeaders():清除缓冲区流中的所有头。
            • Redirect(String, Boolean):将客户端重定向到新的 URL。 指定新的 URL 并指定当前页的执行是否应终止。
            • BinaryWrite(Byte[]):将二进制字符串写入 HTTP 输出流。
            • Write(String):将一个字符串写入 HTTP 响应输出流。
            • WriteFile(String):将指定文件的内容作为文件块直接写入 HTTP 响应输出流。
            • TransmitFile(String):将指定的文件直接写入 HTTP 响应输出流,而不在内存中缓冲该文件。
            • Clear():清除缓冲区流中的所有内容输出。
            • ClearContent():清除缓冲区流中的所有内容输出。
            • Flush():向客户端发送当前所有缓冲的输出。
            • End():将当前所有缓冲的输出发送到客户端,停止该页的执行,并引发 EndRequest 事件。
            • Close():关闭到客户端的套接字连接。

            六、Server属性

            在Asp.net WebForm中,Server属性获取提供用于处理 Web 请求的方法的 HttpServerUtility 对象。而在Asp.net MVC中,Server对象是HttpServerUtilityBase对象。

            通过Page.Server属性访问,提供用于对Web请求的Help方法。

            • MachineName:获取服务器的计算机名称。、
            • ScriptTimeout:获取和设置请求超时值(以秒计)。
            • Execute:在当前请求的上下文中(服务端中)执行指定资源的处理程序,然后将执行返回给调用它的页。
            • Transfer:终止当前页的执行,并为当前请求开始执行新页。
              • HtmlEncode/HtmlDecode:对要在浏览器中显示的HTML字符串进行编码。/对已被编码以消除无效 HTML 字符的字符串进行解码
              • UrlEncode/UrlDecode:编码/解码URL字符串,以便通过 URL 从 Web 上进行可靠的 HTTP 传输。
              • UrlPathEncode:对 URL 字符串的路径部分进行 URL 编码并返回编码后的字符串。
              • MapPath:返回与 Web 服务器上的指定虚拟路径相对应的物理文件路径。 该方法经常使用。将虚拟路径转换为服务器物理路径。

              context.Response.Write(context.Server.MapPath("/")); //输出 C:\Users\Administrator\Desktop\WebApplication1\WebApplication1\ //该方法经常用,将虚拟路径转换为物理路径 context.Response.Write("<div style='background-color:red'>HtmlEncode测试</div>"); //如果不编码,默认就是会被浏览器解析的 context.Response.Write(context.Server.HtmlEncode("<div style='background-color:red'>HtmlEncode测试</div>")); //经过编码之后 原样输出

              HttpUtility类由HttpServerUtility类在内部使用,HttpUtility类包含无法从Server访问的编码和解码实用工具方法,如:ParseQueryString()方法等。

              Response.Write("|Url:"+HttpUtility.UrlEncode("你好啊"));

              若要对 Web 应用程序之外的值进行编码或解码,请使用WebUtility类。

              3、Server.Execute、Server.Transfer、Response.Redirect区别

              • Server.Execute方法允许当前的ASPX页面执行一个同一Web服务器上的指定ASPX页面,当指定的ASPX页面执行完毕,控制流程重新返回原页面发出Server.Execute调用的位置。
              • Server.Transfer的跳转完全是在服务器端,浏览器根本不知道已经跳转了,因此路径显示的仍然是原路径。
              • Response.Redirect是客户端发送请求到服务器,服务器执行Response.Redirect之后,返回302,浏览器接收到请求后,再次发送一次请求到要跳转的URL.

              在网络状态较好的情况下,Redirect(url)方法效率最高!! 可重定向到同一台或非同一台服务器上的aspx或非aspx(html)资源。

              ASP.NET中HttpContext对象下的哪些属性具体功能是什么?

              Server.Transfer方法和Server.Execute方法最灵活!! 但只能转到同一Application目录下,也有可能导致不期望的结果发生。

              Server.Execute方法占用资源最多.

              七、Session属性:每一个用户的专有信息

              Session属性为当前 HTTP 请求获取HttpSessionState对象。

              Session用来保存每一个用户的专有信息。 HttpSessionState类通过HttpContext或Page对象的Session属性访问。一台客户机上多个浏览器窗口访问只有一个Session。

              Session的生存期是用户持续请求时间加上一段时间(一般是20分钟左右), Session超时或者被关闭将自动释放数据信息,由于用户停止使用应用程序之后它仍在内存中存留一段时间,因此这种方法效率较低。

              Session信息是保存在Web服务器内存中的,保存数据量可大可小。

              1、配置Session

              在Web.config中的 <system.web> </system.web>之间添加

              <sessionState mode="InProc"//InProc:保存到内存,Off;StateServer;SQLServer等 stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" //如果cookieless=true表示不用Cookie,用URL查询字符串传送会话ID。 timeout="20" />

              其中timeout是过期时间,如20分钟后超时。

              2、操作Session:

              //添加: Session["userName"] = "aaa"; //获取: if (Session["userName"] != null) { string str = Session["userName"].ToString(); } //清除某个Session Session["UserName"] = null; Session.Remove("UserName"); //清除全部Session Session.Clear();

              八、User属性

              User的属性提供对IPrincipal接口的属性和方法的编程访问。

              这个属性能让我们访问各种信息,包括用户是否已验证,用户的类型,用户名等等,我们还可以对该属性的功能进性扩展,以实现我们的要求。
              分配给HttpContext.User的对象必须实现IPrincipal接口,而Iprincipal定义的属性之一是Identity,它必须实现Iidentity接口。

              if (User.Identity.IsAuthenticated) { Page.Title = "Home page for " + User.Identity.Name; } else { Page.Title = "Home page for guest user."; }

              到此这篇关于ASP.NET中HttpContext对象的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持易盾网络。

              标签: