请选择 进入手机版 | 继续访问电脑版

马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

Asp.net HttpContext 简介

[复制链接]
查看3356 | 回复0 | 2019-11-8 09:52:26 | 显示全部楼层 |阅读模式
1. Context 名词分析 Context 直接翻译就是上下文。"上下文" 这个名词还是挺让人费解的,是一个非常泛化的概念。刚看到有点让人摸不着头脑,一个高端大气上档次的名词,如果要找一个雷同的表明可以是我们读文章会用到的语境。 我们讲个“语境” 与“上下文”的例子,大概可以资助明确。比如“他是背着包袱脱离家的,”“包袱”在这内里有点歧义。 这句话可以明确为“他背着一包东西脱离了家”,也可以说“他带着头脑负担脱离了家”,在这里词语“包袱”只有借助特定的语境才华确定其真正寄义。 那么我们在 web 中经常利用到的Session , 也是如许的, 单单给你一个Session,你是没有办法知道详细的寄义的,每个哀求过来的 Session大概都会不一样,大概有些内里就没有值,只有在运行时每一次哀求上下文中我们获取的这个Session的值才是故意义的。 2. HttpContext 的简单先容 起首我们来看一下这个类的定义,这内里只是截取了部分,标红的是我们经常用到的,有些是每一次哀求必须要用到的,既然我用了哀求这个词,那就是对应的 HttpRquest。有哀求就会有返回,这个就是HttpReponse。
095439q3ileyye1neypflv.png
我们起首看一下 定名空间 System.Web,这个只要稍微知道一下,偶尔我们要用一个 api 经常不知道它所在的定名空间。 HttpRequest 的定义
095454vs6zm6zf66u6s6mf.png
这个是与哀求有关的全部参数,看这个紧张是相识 Request 的大概内容。 如果你要获取一个跟欣赏器有关的信息,比如cookie 的值,那你应该从这个地方来找一下有没有,如果连这个地方都没有,那很大大概性,你是没有办法得到的。固然 cookie这边是有的。再看一下QuertString上面 有详细的利用方法,这些方法不是我本身写上去的,是api内里自带的,告诉你怎么利用的,这些关注一下,可以加深你对一个api的影象。 当你不知道一个api怎么用的时间,先去定义内里看一下关于这个api的各种信息,内里总归有一个是得当你的,如果着实找不到,可以思量一下你要找的信息是不是在其他api内里,与HttpRequest 有关吗,比如你要指定返复书息的字符集,那应该到 HttpReponse 内里去找,我们不能用一个化学方程式来办理一个牛顿力学题目,不外好像如今大部分汽车的能量来源是化石燃料,化学方程式大概也可以处理惩罚物理题目。 HttpReponse 的定义
095456c83vzq4gze6lwb1w.png
这个是与返回有关的全部参数,如果你要指定返回的字符集,那你可以指定 Charset。
095458p1l787j9kl72ikql.png
我们发现HttpReponse内里也有一个 Cookies,那么这个 Cookies 和 HttpRequest 是同一个吗?如果你有答案了可以验证一下。 var requestCookie = HttpContext.Current.Request.Cookies; var reponseCookie = HttpContext.Current.Response.Cookies; var b = requestCookie.Equals(reponseCookie); 3 . HttpContext 总结 通过上面的两个例子,给我们的感觉 Context 有点像一个堆栈,我们须要什么就可以去内里拿,如果在这内里也找不到.,那其他地方就很难再找到了。下面我们重新熟悉一下HttpContext。 HttpContext 就是关于 Http哀求过程中涉及到的全部变量大概引用存放的一个堆栈。 雷同的我们还有 DbContext, ApplicationContext 。在这内里我们提到了 “上下文”、“堆栈” 这些名词,在这篇文章的边界之内,指代的就是 Context 这个概念。 4. 小思考 既然我们知道了这些,那就给你出个小标题呗,如果要获取用户的 IP 那应该从哪里去找,大概偶尔间获取的值跟你想象的不一样,应用服务器前面有了一层反向署理服务器比如 Nginx , 会不会影响我们这种方式取IP所在呢,这时我们该怎么办。 这内里涉及到一个小定义 X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的哀求端真实的IP,只有在通过了HTTP 署理大概负载平衡服务器时才会添加该项。它不是RFC中定义的尺度哀求头信息,在squid缓存署理服务器开发文档中可以找到该项的详细先容。尺度格式如下:X-Forwarded-For: client1, proxy1, proxy2 var headers = HttpContext.Current.Request.Headers; var forward = headers["X-Forwarded-For"]; forward 记录完备的署理链路。

C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则