c#一般处理程序(1)---httpcontext

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

原文链接:https://blog.csdn.net/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。

附两张表:

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值