1.  Context    名词解析
     Context 直接翻译就是上下文。"上下文" 这个名词还是挺让人费解的,是一个非常泛化的概念。刚看到有点让人摸不着头脑,一个高端大气上档次的名词,如果要找一个类似的解释可以是我们读文章会用到的语境。
        我们讲个“语境” 与“上下文”的例子,可能可以帮助理解。比如“他是背着包袱离开家的,”“包袱”在这里面有点歧义。 这句话可以理解为“他背着一包东西离开了家”,也可以说“他带着思想负担离开了家”,在这里词语“包袱”只有借助特定的语境才能确定其真正含义。 那么我们在 web 中经常使用到的Session , 也是这样的, 单单给你一个Session,你是没有办法知道具体的含义的,每个请求过来的 Session可能都会不一样,可能有些里面就没有值,只有在运行时每一次请求上下文中我们获取的这个Session的值才是有意义的。
 
2.   HttpContext  的简单介绍
      首先我们来看一下这个类的定义,这里面只是截取了部分,标红的是我们经常用到的,有些是每一次请求必须要用到的,既然我用了请求这个词,那就是对应的 HttpRquest。有请求就会有返回,这个就是HttpReponse。
     
 
我们首先看一下 命名空间 System.Web,这个只要稍微知道一下,有时我们要用一个 api 经常不知道它所在的命名空间。
 
HttpRequest 的定义
这个是与请求有关的所有参数,看这个主要是了解 Request 的大概内容。 如果你要获取一个跟浏览器有关的信息,比如cookie 的值,那你应该从这个地方来找一下有没有,如果连这个地方都没有,那很大可能性,你是没有办法得到的。当然 cookie这边是有的。再看一下QuertString上面 有具体的使用方法,这些方法不是我自己写上去的,是api里面自带的,告诉你怎么使用的,这些关注一下,可以加深你对一个api的记忆。 当你不知道一个api怎么用的时候,先去定义里面看一下关于这个api的各种信息,里面总归有一个是适合你的,如果实在找不到,可以考虑一下你要找的信息是不是在其他api里面,与HttpRequest 有关吗,比如你要指定返回信息的字符集,那应该到 HttpReponse 里面去找,我们不能用一个化学方程式来解决一个牛顿力学问题,不过好像现在大部分汽车的能量来源是化石燃料,化学方程式可能也可以处理物理问题。
 
HttpReponse 的定义
这个是与返回有关的所有参数,如果你要指定返回的字符集,那你可以指定  Charset。
 
我们发现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 记录完整的代理链路。

Asp.net HttpContext 简介的更多相关文章

  1. 解读ASP.NET 5 & MVC6系列(1):ASP.NET 5简介

    ASP.NET 5简介 ASP.NET 5是一个跨时代的改写,所有的功能和模块都进行了独立拆分,做到了彻底解耦.为了这些改写,微软也是蛮 拼的,几乎把.NET Framwrok全部改写了一遍,形成了一 ...

  2. 第一章ASP.NET SignalR简介

    第一章ASP.NET SignalR简介 1.1概述: ASP.NET SignalR是微软新开发的类库,为的是帮助ASP.NET开发人员很方便地开发实时网络功能. SignalR允许服务器端和客户端 ...

  3. ASP.NET 5简介

    ASP.NET 5简介 解读ASP.NET 5 & MVC6系列(1):ASP.NET 5简介 2015-05-13 09:14 by 汤姆大叔, 3379 阅读, 39 评论, 收藏, 编辑 ...

  4. 酷学习笔记——ASP.NET Core 简介

    ASP.NET Core 简介 其实就是说酷好,不好好学,不学好,没饭吃. 新词汇:IoT,Internet of Things,网联网,微软物联网英文网站.微软物联网中文网站

  5. ASP.NET Razor 简介

    ylbtech-.NET: ASP.NET Razor 简介 Razor 不是一种编程语言.它是服务器端的标记语言. 1. 什么是 Razor?返回顶部 Razor 是一种标记语法,可以让您将基于服务 ...

  6. [翻译] ASP.NET Core 简介

    ASP.NET Core 简介 原文地址:Introduction to ASP.NET Core         译文地址:asp.net core 简介           翻译:ganqiyin ...

  7. [中文翻译] ASP.NET 5 简介(Introducing ASP.NET 5,原作ScottGu 2015/2/23)

    本文出处  [中文翻译] ASP.NET 5 简介(Introducing ASP.NET 5,原作ScottGu 2015/2/23) 这是我的文章备份 http://www.dotblogs.co ...

  8. ASP.NET Core 简介 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 简介 - ASP.NET Core 基础教程 - 简单教程,简单编程 ← ASP.NET Core 基础教程 ASP.NET Core Windows 环境配置 → A ...

  9. [转帖]2016年的文章: 解读ASP.NET 5 & MVC6系列教程(1):ASP.NET 5简介

    解读ASP.NET 5 & MVC6系列教程(1):ASP.NET 5简介 更新时间:2016年06月23日 11:38:00   作者:汤姆大叔    我要评论 https://www.jb ...

随机推荐

  1. InnoSetup 安装选择不同语言,修改软件配置参数,达到安装语言就是软件语言效果

    需求 在软件安装时,选择中英文安装界面,选择的中英文界面就是对应软件内界面语言. 在软件安装时,选择中文界面,打开软件就是中文界面. 在软件安装时,选择英文界面,打开软件就是英文界面. 实际上,就是在 ...

  2. python网络爬虫进阶之HTTP原理,爬虫的基本原理,Cookies和代理介绍

    目录 一.HTTP基本原理 (一)URI和URL (二)超文本 (三)HTTP和HTTPS (四)HTTP请求过程 (五)请求 1.请求方法 2.请求的网址 3.请求头 4.请求体 (六)响应 1.响 ...

  3. CSS元素显示模式

    CSS的元素显示模式 什么是元素显示模式 作用:网页的标签非常多,在不同的地方会用到不同类型的标签,了解他们的特点可以更好的布局我们的网页 元素的显示模式就是元素(标签)以什么样的方式进行显示,比如& ...

  4. 用vue和layui简单写一个响应式数据展示表

    在创建项目之前,先把我们需要的文件打包处理 <!DOCTYPE html> <html lang="en"> <head> <meta c ...

  5. 挑战常规 -- 为什么不要再用cookie作为储存?

    不要使用cookie当存储 Cookie 是什么? Cookie 由浏览器储存在本地,每次访问目标网址会带上的请求头,服务器可以通过Set-Cookie响应头设置Cookie. Cookie的用途 由 ...

  6. Ajax错误

    如果ajax访问不到后台对应的controller的方法,直接报错,首先查看url访问路径,如果路径没错误,再利用谷歌开发者工具来运行一下,是否存在基本语法错误,比如字符写错了,多一个少一个逗号, 如 ...

  7. ssh-copy-id 实现ssh无密码登录 openssh putty

    ssh-keygen 生成公私钥对 $ssh-keygen ssh-copy-id将本机的公钥复制到远程机器 ssh-copy-id -i .ssh/id_rsa.pub(公钥路径) 用户名字@192 ...

  8. python语法区别

    python语法区别: 大小写敏感 (动态语言:python)变量不用声明 p.s: 静态语言(Java)必须声明变量 语句末尾可以不打分号 可以直接进行数学计算 复制.粘贴功能失效,粘贴到别的地方的 ...

  9. JSON理解(一篇就够了)

    可以看看视频讲解,视频几十分钟就结束了 JSON 1.什么是json 其实是一种数据格式的规范,与开发的语言无关,轻量级的数据格式 全称JavaScript Object Notation 2.优点: ...

  10. 七,专著研读(Logistic回归)

    七,专著研读(Logistic回归) 分类:k-近邻算法,决策树,朴素贝叶斯,Logistic回归,支持向量机,AdaBoost算法. 运用 k-近邻算法,使用距离计算来实现分类 决策树,构建直观的树 ...