我的编程空间,编程开发者的网络收藏夹
学习永远不晚

ASP.NET中HttpContext对象下的属性怎么用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

ASP.NET中HttpContext对象下的属性怎么用

这篇文章主要讲解了“ASP.NET中HttpContext对象下的属性怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“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、访问方式

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

HttpContext context = HttpContext.Current;

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

HttpContextBase context = this.HttpContext;

如果是在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:启用到输出 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方法。

1、属性

  • MachineName:获取服务器的计算机名称。、

  • ScriptTimeout:获取和设置请求超时值(以秒计)。

2、方法

  • 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)资源。

    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();}//清除某个SessionSession["UserName"] = null;Session.Remove("UserName");//清除全部SessionSession.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对象下的属性怎么用”的内容了,经过本文的学习后,相信大家对ASP.NET中HttpContext对象下的属性怎么用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    ASP.NET中HttpContext对象下的属性怎么用

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    ASP.NET中HttpContext对象下的属性怎么用

    这篇文章主要讲解了“ASP.NET中HttpContext对象下的属性怎么用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“ASP.NET中HttpContext对象下的属性怎么用”吧!一、H
    2023-06-30

    VB.NET中Process的属性与对象怎么用

    这篇文章主要介绍VB.NET中Process的属性与对象怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!你再也不需要使用Win32应用编程接口或者VB的Shell函数来启动外部应用程序了。因为你可以使用.NET框
    2023-06-17

    ASP.NET中validationgroup属性怎么使用

    在ASP.NET中,validationgroup属性用于指定一组相关的验证控件。它可以确保只有在相同的validationgroup属性值下的控件才会进行验证。要使用validationgroup属性,需要按照以下步骤进行操作:1. 在需
    2023-09-21

    wpf怎么绑定对象的属性

    在WPF中,可以使用数据绑定来绑定对象的属性。首先,确保你的对象实现了INotifyPropertyChanged接口。这个接口定义了一个PropertyChanged事件,可以通知绑定的UI控件属性的值已经发生了变化。在XAML中,你
    2023-10-24

    怎么在JavaScript中遍历对象属性

    本篇文章为大家展示了怎么在JavaScript中遍历对象属性,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。JavaScript是什么JavaScript是一种直译式的脚本语言,其解释器被称为Java
    2023-06-14

    python怎么获取对象的属性

    在Python中,可以使用以下几种方法来获取对象的属性:使用点操作符(.):可以直接通过对象名加点操作符和属性名来访问对象的属性。例如:object_name.attribute_name使用getattr()函数:可以使用getattr
    2023-10-24

    Vue3中怎么使用watch监听对象的属性值

    这篇文章主要介绍“Vue3中怎么使用watch监听对象的属性值”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Vue3中怎么使用watch监听对象的属性值”文章能帮助大家解决问题。Vue3 中使用 w
    2023-07-04

    python怎么获取对象的属性值

    要获取对象的属性值,可以使用点操作符或getattr()函数。1. 点操作符:使用点操作符可以直接获取对象的属性值。pythonclass MyClass:def __init__(self, x):self.x = xobj = MyCl
    2023-10-18

    es6对象增加新的属性怎么使用

    今天小编给大家分享一下es6对象增加新的属性怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。es6对象增加新的属性是“
    2023-07-04

    怎么在JavaScript中为对象添加属性

    本篇文章给大家分享的是有关怎么在JavaScript中为对象添加属性,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。JavaScript是什么JavaScript是一种直译式的脚
    2023-06-14

    react怎么修改对象的属性值

    react修改对象属性值的方法:1、打开相应的react代码文件;2、查看“this.setState({message:event.target.value})”;3、通过“let data=Object.assign({}, this.state.datavalue, {name: val})this.setState({datavalue: data})”修改属性值即可。
    2023-05-14

    php怎么获取对象的属性值

    在PHP中,可以使用箭头运算符(->)来获取对象的属性值。假设有一个名为$object的对象,具有名为$property的属性,您可以使用以下语法来获取属性值:$value = $object->property;例如,假设有一个名为$pe
    2023-10-18

    jdk8中怎么使用stream实现对象属性的合并

    这篇“jdk8中怎么使用stream实现对象属性的合并”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“jdk8中怎么使用str
    2023-06-26

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录