浅谈C#的一般处理程序

已被阅读 1461 次 | 文章分类:csharp | 2018-10-03 01:25

一般处理程序是在.net 平台通过C#语言实现System.Web.IHttpHandler接口的特殊类;一个HttpHandler程序负责处理它所对应的一个或一组URL地址的访问请求,并接收客户端发出的访问请求信息(请求报文)和产生响应内容(响应报文)

一:认识HttpHandler接口

1.通过HttpHandler程序可以完成:获取客户端通过HTML的Form表单提交的数据和URL参数;创建对客户端的响应消息内容;访问服务器端的文件系统;连接数据库并开发基于数据库的应用.

2.HttpHandler接口类包括两个成员:ProcessRequest方法与Isusable属性;对http的请求主要在ProcessRequest中实现。

3. 在处理程序中,可以右键查看定义,定位到关于IHandler接口类的定义,如下

                                            
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace handler
{
    public class Handler1 : IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            context.Response.Write("Hello World");
        }
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}
                                            
                                        

二:新建一般处理程序项目

1.首先用Visual Studio 2013新建一个空的web项目,然后右键项目添加新项,找到一般处理程序;会生成如下代码

                                            
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace handler
{
    public class Handler1 : IHttpHandler
    {
        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            context.Response.Write("Hello World");
        }
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}
                                            
                                        

通过访问http://localhost:10099/Handler1.ashx,结果页面输出Hello World

(1) HttpContext: 请求上下文对象,包含:请求报文对象(HttpRequest),响应报文对象(HttpResponse),服务器帮助类(Server),Session等。

(2) ContentType属性:是一般处理程序输出响应内容,输出的内容有可能是图片、html等其他页面,浏览器根据响应报文体内容不知道接收到的是什么,需要判断响应报文头里的ContentType来决定将报文体内容作为何种格式的数据来显示

2.输出一个网页

                                            
context.Response.ContentType = "text/html";
context.Response.Write("<html><head></head><body><h1>welcome to xiaobaigis.com</h1></body></html>");
                                            
                                        

3.输出一个文件

                                            
context.Response.ContentType = "image/jpg";
context.Response.WriteFile("xiaobaigis.jpg");
                                            
                                        

基本原理:.net在接收到请求后,通过反射技术创建一个请求路径对应的类(即继承IHttpHandler接口)的对象,并强制转换成IHttpHandler接口对象(处理器类实现了IHttpHandler,转换相当于将子类强转为父类),然后统一调用ProcessRequest方法处理

QQ:3410192267 | 技术支持 微信:popstarqqsmall

Copyright ©2017 xiaobaigis.com . 版权所有 鲁ICP备17027716号