[摘]http://www.cnblogs.com/fish-li/archive/2011/08/21/2148640.html


HttpRuntime

HttpRuntime公开了一个静态方法 UnloadAppDomain() ,这个方法可以让我们用代码重新启动网站。 通常用于用户通过程序界面修改了一个比较重要的参数,这时需要重启程序了。

HttpRuntime还公开了一个大家都熟知的静态属性 Cache 。可能有些人认为他/她在使用Page.Cache或者HttpContext.Cache, 事实上后二个属性都是HttpRuntime.Cache的【快捷方式】。


HttpServerUtility , HttpUtility

HttpServerUtility的实例通常以Server的属性公开, 但它的提供一些Encode, Decode方法其实调用的是HttpUtility类的静态方法。

  1. HttpUtility公开了一些静态方法,如:
    HtmlEncode(),应该是使用频率比较高的方法,用于防止注入攻击,它负责安全地生成一段HTML代码。
    有时我们还需要生成一个URL,那么UrlEncode()方法就能派上用场了,因为URL中并不能包含所有字符,所以要做相应的编码。
    HttpUtility还有一个方法HtmlAttributeEncode(),它也是用于防止注入攻击,安全地输出一个HTML属性。
    在.net4中,HttpUtility还提供了另一个方法:JavaScriptStringEncode(),也是为了防止注入攻击,安全地在服务端输出一段JS代码。
  2. HttpUtility还公开了一些静态方法,如:
    HtmlDecode(), UrlDecode(),通常来说,我们并不需要使用它们。尤其是UrlDecode ,除非您要自己的框架,一般来说, 在我们访问QueryString, Form时,已经做过UrlDecode了,您就不用再去调用了。
  3. HttpServerUtility除了公开了比较常用的Encode, Decode方法外,还公开了一个非常有用的方法:Execute(),是的,它非常有用, 尤其是您需要在服务端获取一个页面或者用户控件的HTML输出时。

HttpRequest

HttpRequest:使 ASP.NET 能够读取客户端在 Web 请求期间发送的 HTTP 值。HttpRequest的实例包含了所有来自客户端的所有数据,我们可以把这些数据看成是输入数据, Handler以及Module就相当于是处理过程,HttpResponse就是输出了。

在HttpRequest包含的所有输入数据中,有我们经常使用的QueryString, Form, Cookie,它还允许我们访问一些HTTP请求头、 浏览器的相关信息、请求映射的相关文件路径、URL详细信息、请求的方法、请求是否已经过身份验证,是否为SSL等等。

HttpRequest的公开属性绝大部分都是比较重要的

  1. // 获取服务器上 ASP.NET 应用程序的虚拟应用程序根路径。
  2. public string ApplicationPath { get; }
  3.  
  4. // 获取应用程序根的虚拟路径,并通过对应用程序根使用波形符 (~) 表示法(例如,以“~/page.aspx”的形式)使该路径成为相对路径。
  5. public string AppRelativeCurrentExecutionFilePath { get; }
  6.  
  7. // 获取或设置有关正在请求的客户端的浏览器功能的信息。
  8. public HttpBrowserCapabilities Browser { get; set; }
  9.  
  10. // 获取客户端发送的 cookie 的集合。
  11. public HttpCookieCollection Cookies { get; }
  12.  
  13. // 获取当前请求的虚拟路径。
  14. public string FilePath { get; }
  15.  
  16. // 获取采用多部分 MIME 格式的由客户端上载的文件的集合。
  17. public HttpFileCollection Files { get; }
  18.  
  19. // 获取或设置在读取当前输入流时要使用的筛选器。
  20. public Stream Filter { get; set; }
  21.  
  22. // 获取窗体变量集合。
  23. public NameValueCollection Form { get; }
  24.  
  25. // 获取 HTTP 头集合。
  26. public NameValueCollection Headers { get; }
  27.  
  28. // 获取客户端使用的 HTTP 数据传输方法(如 GET、POST 或 HEAD)。
  29. public string HttpMethod { get; }
  30.  
  31. // 获取传入的 HTTP 实体主体的内容。
  32. public Stream InputStream { get; }
  33.  
  34. // 获取一个值,该值指示是否验证了请求。
  35. public bool IsAuthenticated { get; }
  36.  
  37. // 获取当前请求的虚拟路径。
  38. public string Path { get; }
  39.  
  40. // 获取 HTTP 查询字符串变量集合。
  41. public NameValueCollection QueryString { get; }
  42.  
  43. // 获取当前请求的原始 URL。
  44. public string RawUrl { get; }
  45.  
  46. // 获取有关当前请求的 URL 的信息。
  47. public Uri Url { get; }
  48.  
  49. // 从 QueryString、Form、Cookies 或 ServerVariables 集合中获取指定的对象。
  50. public string this[string key] { get; }
  51.  
  52. // 将指定的虚拟路径映射到物理路径。
  53. // 参数: virtualPath: 当前请求的虚拟路径(绝对路径或相对路径)。
  54. // 返回结果: 由 virtualPath 指定的服务器物理路径。
  55. public string MapPath(string virtualPath);

HttpRequest的QueryString, Form属性的类型都是NameValueCollection【是一个不区分大小写的集合】,它个集合类型有一个特点:允许在一个键下存储多个字符串值。如:

  1. Response.Redirect( "?aa=1&bb=2&cc=3&aa=" + HttpUtility.UrlEncode("5,6,7"), true);

string aa=Request.QueryString[aa];

aa的值为:"1,5,6,7”

HttpRequest还有二个用于方便获取HTTP数据的属性Params,Item ,它可以让我们在写代码时不必区分是GET还是POST,这二个属性唯一不同的是:Item是依次访问这4个集合,找到就返回结果,而Params是在访问时,先将4个集合的数据合并到一个新集合(集合不存在时创建), 然后再查找指定的结果。

HttpResponse

HttpResponse:向客户端返回结果。而所有需要向客户端返回的操作都要调用HttpResponse的方法。 它提供的功能集中在操作HTTP响应部分,如:响应流,响应头。

  1. // 获取网页的缓存策略(过期时间、保密性、变化子句)。
  2. public HttpCachePolicy Cache { get; }
  3.  
  4. // 获取或设置输出流的 HTTP MIME 类型。默认值为“text/html”。
  5. public string ContentType { get; set; }
  6.  
  7. // 获取响应 Cookie 集合。
  8. public HttpCookieCollection Cookies { get; }
  9.  
  10. // 获取或设置一个包装筛选器对象,该对象用于在传输之前修改 HTTP 实体主体。
  11. public Stream Filter { get; set; }
  12.  
  13. // 启用到输出 Http 内容主体的二进制输出。
  14. public Stream OutputStream { get; }
  15.  
  16. // 获取或设置返回给客户端的输出的 HTTP 状态代码。默认值为 200 (OK)。
  17. public int StatusCode { get; set; }
  18.  
  19. // 将 HTTP 头添加到输出流。
  20. public void AppendHeader(string name, string value);
  21.  
  22. // 将当前所有缓冲的输出发送到客户端,停止该页的执行,并引发EndRequest事件。
  23. public void End();
  24.  
  25. // 将客户端重定向到新的 URL。指定新的 URL 并指定当前页的执行是否应终止。
  26. public void Redirect(string url, bool endResponse);
  27.  
  28. // 将指定的文件直接写入 HTTP 响应输出流,而不在内存中缓冲该文件。
  29. public void TransmitFile(string filename);
  30.  
  31. // 将 System.Object 写入 HTTP 响应流。
  32. public void Write(object obj);

HttpContext

HttpContext【在任何地方都能找到】 –>派生 HttpRequest, HttpResponse, HttpServerUtility, Cache

属性 User, Items, Current

User:保存于当前请求的用户身份信息,如果判断当前请求的用户是不是已经过身份认证,可以访问:Request.IsAuthenticated这个实例属性。

Items:datatype字典,因此适合以Key/Value的方式来访问,不同的请求之间,数据不会被共享。

Current:是HttpContext在任何地方都能使用其几个主要派生(HttpRequest, HttpResponse, Server, Cache)的关键

[摘]HttpContext, HttpRequest, HttpResponse, HttpRuntime, HttpServerUtility的更多相关文章

  1. Asp.net有三大对象:HttpContext, HttpRequest, HttpResponse

    一.Asp.net有三大对象:HttpContext, HttpRequest, HttpResponse.命名空间:  System.Web程序集:  System.Web(在 System.Web ...

  2. Django——20141014深入理解Django HttpRequest HttpResponse的类和实例

    深入理解Django HttpRequest HttpResponse的类和实例 了解META选项 了解中间件 理清所有模板传输模板变量的方式,并作出选择 Django模板系统:如何利用Django模 ...

  3. Django day05 视图层之 (HttpRequest) \ (HttpResponse) \ (JsonResponse) 对象

    一:视图层之HttpRequest对象 # 前台Post传过来的数据,包装到POST字典中 # request.POST # 前台浏览器窗口里携带的数据,包装到GET字典中 # request.GET ...

  4. HttpRequest,HttpResponse,乱码,转发和重定向

    HttpServletRequest简介 Web服务器收到客户端的http请求,会针对每一次请求,创建一个用于代表请求的HttpServletRequest类型的request对象,并将"H ...

  5. ASP.NET Core 运行原理解剖[4]:进入HttpContext的世界

    HttpContext是ASP.NET中的核心对象,每一个请求都会创建一个对应的HttpContext对象,我们的应用程序便是通过HttpContext对象来获取请求信息,最终生成响应,写回到Http ...

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

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

  7. ASP.NET Core HTTP 管道中的那些事儿

    前言 马上2016年就要过去了,时间可是真快啊. 上次写完 Identity 系列之后,反响还不错,所以本来打算写一个 ASP.NET Core 中间件系列的,但是中间遇到了很多事情.首先是 NPOI ...

  8. 一不小心写了个WEB服务器

    开场 Web服务器是啥玩意? 是那个托管了我的网站的机器么? No,虽然那个也是服务器,但是我们今天要说的Web服务器主要是指像IIS这样一类的,用于处理request并返回response的工具,没 ...

  9. NET Core HTTP 管道

    ASP.NET Core HTTP 管道中的那些事儿   前言 马上2016年就要过去了,时间可是真快啊. 上次写完 Identity 系列之后,反响还不错,所以本来打算写一个 ASP.NET Cor ...

随机推荐

  1. arduino 中通过寄存器地址访问寄存器内容

    void call_func( void (*func)(void)){ (*func)(); } void setup() { // put your setup code here, to run ...

  2. php文件上传代码解析

    php文件上传代码解析 is_uploaded_file()  //函数判断指定的文件是否是通过 HTTP POST 上传的,返回一个布尔值. $_FILES['upfile']['tmp_name' ...

  3. Java性能调优:利用JFR生成性能日志

    Java性能调优作为大型分布式系统提供高性能服务的必修课,其重要性不言而喻. 好的分析工具能起到事半功倍的效果,利用分析利器JMC.JFR,可以实现性能问题的准确定位. 本文主要阐述如何利用JFR生成 ...

  4. STL中的内存与效率

    STL中的内存与效率 1. 使用reserve()函数提前设定容量大小,避免多次容量扩充操作导致效率低下.  关于STL容器,最令人称赞的特性之一就是是只要不超过它们的最大大小,它们就可以自动增长到足 ...

  5. MFC-CWinApp

    概览 CWinApp为应用程序类, CWinApp由 CWinThread 派生而来 ,后者表示可能具有一个或多个线程的应用程序的主执行线程,基于框架生成的应用程序必须有且仅有一个从 CWinApp ...

  6. Delphi for iOS开发指南(3):创建一个FireMonkey iOS应用程序

    http://cache.baiducontent.com/c?m=9d78d513d9d431a94f9d92697d60c015134381132ba1d0020fa48449e3732b4b50 ...

  7. delphi 动态加载dll

    引入文件 DLL比较复杂时,可以为它的声明专门创建一个引入单元,这会使该DLL变得更加容易维护和查看.引入单元的格式如下: unit MyDllImport; {Import unit for MyD ...

  8. 新建linux服务器初始化操作

    1.关闭不需要的服务 首先确定服务器有没有ntsysv命令,如果没有的话,直接使用yum安装即可. 使用ntsysv关闭不需要的服务以节省服务器资源 需要打开的服务如下: crond:周期性计划任务 ...

  9. 客户端Git代码的下载与提交

    (1)git clone 服务器用户名@服务器IP:~/Git目录/.git 功能:下载服务器端Git仓库中的文件或目录到本地当前目录. (2)对Git目录中的文件进行修改. (3)git statu ...

  10. asp.net—策略模式

    一.什么是策略模式 定义:定义一系列算法,把一个个算法封装成独立类并实现同一个接口,使得它们之间可以相互替换. 二.怎么使用策略模式 首先模拟一个场景:有一个用户想买车.  可以有多种方式买车: (1 ...