描述
context. Request["username"]; 通过这种方式,能够得到一个HttpRequest对象。
HttpRequest对象描述了,关于请求的相关信息,
我们可以通过这个对象,拿到我们想要的请求数据

写一个方法获取是否含有a元素
方法一:
void Test(HttpContext context)
{
  if (!string.IsNullOrEmpty(context.Request["a"]))
  {
    context.Response.Write("你好牛");
  }
}
方法二:
void tt1()
{
  HttpContext context = HttpContext.Current;
  if (!string.IsNullOrEmpty(context.Request["a"]))
  {
    context.Response.Write("你好牛11");
  }
}

<form action="Test1.ashx" method="post">
<input type="text" name="name" />
<input type="text" name="age" />
<input type="submit" />
</form>
1.post获取方法,获取通过报文体传输的参数post(get获取不到,为NULL):
注意:请求获取的参数都是字符串
string name = context.Request.Form["name"];
string age = context.Request.Form["age"];
2.get获取方法,则通过QueryString获取(post获取不到,为NULL):
string name = context.Request.QueryString["name"];
string age = context.Request.QueryString["age"];
3.不管是post还是get都可获取:
string name = context.Request["name"];
string age = context.Request["age"];

顺序从QueryString、Form、Cookies、 ServerVariables中找,第一个找到的就是(反编译验证),虽然使用Request[]的这种方式获取请求数据,效率会略有下降(几乎可忽略不计),但使用起来真心方便啊。

注意:当用get或post方法获取不到值时,string类型返回的是null,int类型返回的是0

关于请求数据的类型 
请求参数获取的都是String类型数据,因为Http协议就是文本。
所以获取请求来的数据,大多需要数据转换。

通过HttpRequest对象获取一些请求信息
1)浏览器
context.Request.Browser.Browser
2)操作系统信息
context.Request.Browser.Platform
3)浏览器内核版本
context.Request.Browser.Version
 
4)请求报文头
//Request.Headers请求报文头 
for (int i = 0; i < context.Request.Headers.AllKeys.Length; i++)
{
     string key = context.Request.Headers.AllKeys[i];
     string value = context.Request.Headers[key];
     context.Response.Write(key + "=" + value + "\n");
  }
 
5)获取请求方式 (GET   or   POST?)
context.Request.HttpMethod
6)获取请求页面文件路径(相对)
context.Request.Path
7)获取请求参数
context.Request.QueryString
8)被请求的文件的服务器上的物理路径
context.Request.PhysicalPath
9)获取用户代理
context.Request.UserAgent
10)客户端的IP地址
context.Request.UserHostAddress
11)获取客户端上次请求的url的有关信息
context.Request.UrlReferrer
12)浏览器支持什么语言
context.Request.UserLanguages)

context.Request.FilePath;//获取当前请求的虚拟路径
context.Request.Files;//获取采用多部分 MIME 格式的由客户端上载的文件的集合
context.Request.Form; //获取窗体变量集合,method为post时用此方法请求
context.Request.HttpMethod;//获取客户端使用的 HTTP 数据传输方法(如 GET、POST 或 HEAD)
context.Request.MapPath;//将指定的虚拟路径映射到物理路径
context.Request.Path;//获取当前请求的虚拟路径
context.Request.QueryString;//获取 HTTP 查询字符串变量集合,method为get时用此方法请求
context.Request.RawUrl;//获取当前请求的原始 URL
context.Request.RequestType;//获取或设置客户端使用的 HTTP 数据传输方法(GET 或 POST)
context.Request.ServerVariables;//获取 Web 服务器变量的集合
context.Request.Url;//获取有关当前请求的 URL 的信息
context.Request.UrlReferrer;//获取有关客户端上次请求的 URL 的信息,该请求链接到当前的 URL
context.Request.UserAgent;//获取客户端浏览器的原始用户代理信息
context.Request.UserHostAddress;//获取远程客户端的 IP 主机地址
context.Request.UserHostName;//获取远程客户端的 DNS 名称

ASP.Net核心对象HttpRequest的更多相关文章

  1. 我心目中的Asp.net核心对象

    转:http://www.cnblogs.com/fish-li/archive/2011/08/21/2148640.html 阅读目录 开始 HttpRuntime HttpServerUtili ...

  2. ASP.Net核心对象之HttpResponse

    简介: HttpResponse是对响应报文进行设置的一个对象.通过context. Response 能够得到HttpResponse对象. context.Response.Charset;//获 ...

  3. ASP.NET Core 新核心对象WebHost(一)

    以本系列文章向Fish 前辈的那篇我心中的ASP.NET 核心对象致敬.(虽然不知道前辈现在在干什么).一晃就6年过去了,那首 郝云 的<回到那一天>怎么唱来着? 时光一晃,你就三十了. ...

  4. 我心中的ASP.NET Core 新核心对象WebHost(一)

    以本系列文章向Fish 前辈的那篇我心中的ASP.NET 核心对象致敬.(虽然不知道前辈现在在干什么).一晃就6年过去了,那首 郝云 的<回到那一天>怎么唱来着? 时光一晃,你就三十了. ...

  5. .net 三大核心对象

    .net 三大核心对象 HttpRequest 现在总算轮到第一个核心对象出场了.MSDN给它作了一个简短的解释:“使 ASP.NET 能够读取客户端在 Web 请求期间发送的 HTTP 值.”这个解 ...

  6. Asp.Net WebAPI核心对象解析(三)

    对于.NET的分布式应用开发,可以供我们选择的技术和框架比较多,例如webservice,.net remoting,MSMQ,WCF等等技术.对于这些技术很多人都不会陌生,即时没有深入的了解,但是肯 ...

  7. asp.net core 核心对象解析

    首先声明这篇文章的所有内容均来自https://www.cnblogs.com/artech/p/inside-asp-net-core-framework.html ----感谢大内老A(artec ...

  8. Asp.Net WebApi核心对象解析(下篇)

    在接着写Asp.Net WebApi核心对象解析(下篇)之前,还是一如既往的扯扯淡,元旦刚过,整个人还是处于晕的状态,一大早就来处理系统BUG,简直是坑爹(好在没让我元旦赶过来该BUG),队友挖的坑, ...

  9. ASP.NET Core的路由[2]:路由系统的核心对象——Router

    ASP.NET Core应用中的路由机制实现在RouterMiddleware中间件中,它的目的在于通过路由解析为请求找到一个匹配的处理器,同时将请求携带的数据以路由参数的形式解析出来供后续请求处理流 ...

随机推荐

  1. CF Gym 100685A Ariel

    传送门 A. Ariel time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  2. Xcode的一些有用的插件

    ** --Alcatraz:Xcode插件管理  ** 安装:curl -fsSL https://raw.github.com/supermarin/Alcatraz/master/Scripts/ ...

  3. Bootstrap Modals(模态框)

    http://www.runoob.com/bootstrap/bootstrap-v2-modal-plugin.html 描述 Bootstrap Modals(模态框)是使用定制的 Jquery ...

  4. 在Main中定义student的结构体,进行年龄从大到小依次排序录入学生信息。(结构体的用法以及冒泡排序)

    using System; using System.Collections; using System.Collections.Generic; using System.Linq; using S ...

  5. CentOS 6.4 32位系统 LAMP(Apache+MySQL+PHP)安装步骤

    先来解释一下,什么是 LAMP.正如标题所言,LAMP 实际上就是 Linux.Apache.MySQL.PHP 四个名称的缩写,当然最后一个 “P” 还有其他说法是 Perl 或者 Python.不 ...

  6. JS 下拉菜单

    HTML <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <titl ...

  7. SQL2005删除复制数据库的发布与订阅的方法(转载)

    SQL2005删除复制数据库的发布与订阅的方法 --在测试环境中恢复从正式数据库服务器 上备份下来的bak文件后,正式环境里数据库复制的发布.订阅也被带进来了,结果恢复的数据库无法更改表结构,直接删除 ...

  8. 关于markdown需要澄清的一些误解

    关于markdown需要澄清的误解: 首先, 最大的一个误解就是 转义! markdown不支持对小于号 < 的转义, 如 \<"pre">, 这时候仍然会认为是 ...

  9. thinkphp-1

    thinkphp网站: http://thinkphp.cn, http://bbs.thinkphp.cn 在设置文件夹查看试图的时候, 只点" 应用到所有文件夹" 不要点&qu ...

  10. PHP数据访问

    <?php //作业:把INFO表查出来用表格显示 //1.造一个连接对象 $db = new MySQLi("localhost","root",&qu ...