原文链接:https://blog.youkuaiyun.com/kanglix1an/article/details/17269445
今天我们来说一下一般处理程序,一般处理程序是什么呢? 一般处理程序实际上就是一个处理程序类。那么我们为什么要用?用他有什么优势? 对于ASP.NET网站来说,网站最常见的处理结果就是HTML网页,生成网页的工作通常使用拓展名为ASPX的web窗体来完成。对于处理结果不是HTML的请求,都可以通过一般处理程序完成,例如:RSS、Feed、XML、图片等。一般处理程序是ASP.NET网站中最为简单、高效的处理程序,在处理返回类型不是HTML的请求中有着重要的作用。那么如何使用呢?看一下代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
namespace 一般处理程序Demo
{
/// <summary>
/// Download 的摘要说明
/// </summary>
public class Download : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
//添加一个文件的数据类型
context.Response.ContentType = "application/octet-stream";
//将文件进行编码
string encodeFileName = HttpUtility.UrlEncode("文件.htm");//需要把文件名UrlEncode,因为有中文存在
//添加一个报文头
context.Response.AddHeader("Content-Disposition", string.Format("attachment;filename=\"{0}\"", encodeFileName));
//获得文件的文件名称
string filepath = context.Server.MapPath("Default.aspx");
//利用文件流保存
context.Response.Write(File.ReadAllText(filepath));
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
html页面代码:
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>文件打开与保存</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<a href="Default.aspx">打开文件</a>
<a href="Download.ashx">保存文件</a>
</div>
</form>
</body>
</html>
大家可以看到,一般处理程序用起来很简单。那么我们看看一般处理程序中很重要的一个类:HttpContext类。
HttpContext类:封装有关个别HTTP请求的所有HTTP特定的信息,又叫上下文。 看到这个解释,我觉得有些抽象,Http特定信息具体又是什么?看了下备注:
为继承 IHttpModule 和 IHttpHandler 接口的类提供了对当前 HTTP 请求的 HttpContext 对象的引用。该对象提供对请求的内部 Request、Response 和 Server 属性的访问。
1.生命周期:从用户发送请求开始到服务器处理完请求并生成内容返回到客户端为止。针对每个不同用户的请求,服务器都会创建一个新的HttpContext实例直到请求结束,服务器销毁这个实例.
2.HttpContext的作用:处理请求的属性如:request,response,server等。其实我们在开发asp.net页面的时候,可以直接使用request等,那为什么要通过HttpContext类来访问呢?因为request等这些可以在aspx页面的代码中直接使用,但是在IHttpModule或IHttpHandler中就不能直接使用。HttpContext类对Request、Response、Server等进行了封装,保证在整个请求周期内都可以随时随地地调用。
3.HttpContext其它功能:HttpContext还可以处理CacHe,HttpContext.Item等,在其生命周期内可以存储一些临时数据,方便随时使用。当用户发送某个Http请求,我们可以通过HttpContext进行截获,查看里面包含了哪些请求的信息,然后可以进行一系列的操作,比如说切换到其他的页面,这个时候,可以重组请求的数据满足新页面的要求。即:即使不在page页面中,也可以通过HttpContext的Current属性来获取当前的web状态。
到这里对httpcontext类有了一个大致的了解,下面看看httpcontext的属性和方法。 属性和方法的详细使用可以查询MSDN。
附两张表:


本文深入探讨了ASP.NET中的一般处理程序,讲解了其概念、用途及优势,尤其在处理非HTML请求如RSS、Feed、XML时的高效表现。通过示例代码展示了如何使用一般处理程序下载文件,并解析了HttpContext类的重要性和使用场景。
2万+

被折叠的 条评论
为什么被折叠?



