利用HttpModule实现图片验证码.无实用价值,仅实验HttpModule功能使用。
说明:图片生成部分抄自张子阳的Asp.Net架构
using System;
using System.Web;
using System.Drawing;
using System.Drawing.Imaging;
using System.Text;
namespace MyHttpModule {
public class MyHttpModule :IHttpModule {
public void Init(HttpApplication app) {
app.BeginRequest += new EventHandler(this.App_BeginRequest);
//app.EndRequest += new EventHandler(this.App_EndRequest);
//app.PreRequestHandlerExecute += new EventHandler(this.App_PreRequest);
}
public void App_PreRequest(Object obj, EventArgs e) {
HttpApplication app = (HttpApplication)obj;
HttpContext ctx = app.Context;
HttpResponse rsp = ctx.Response;
rsp.Write(ctx.CurrentHandler.GetType().FullName);
rsp.Write("<br/>");
rsp.Write(ctx.CurrentHandler.ToString());
rsp.Write("<br/>");
rsp.Write(ctx.CurrentHandler.IsReusable);
rsp.Write("<br/>");
rsp.Write(ctx.CurrentHandler.GetHashCode());
rsp.Write("<br/>");
rsp.Write("-----华丽的分割线----------");
rsp.Write("<br/>");
rsp.Write(ctx.Handler.GetType().FullName);
rsp.Write("<br/>");
rsp.Write(ctx.Handler.ToString());
rsp.Write("<br/>");
rsp.Write(ctx.Handler.IsReusable);
rsp.Write("<br/>");
rsp.Write(ctx.CurrentHandler.GetHashCode());
rsp.Write("<br/>");
//ctx.CurrentHandler.ProcessRequest(ctx);
//app.CompleteRequest();
}
public void App_BeginRequest(Object obj, EventArgs e) {
HttpApplication app = (HttpApplication)obj;
HttpContext ctx = app.Context;
HttpResponse rsp = ctx.Response;
//rsp.Write("我来自Application Begin Request");
rsp.ContentType = "image/gif";
Bitmap basemap = new Bitmap(200, 60);
Graphics graph = Graphics.FromImage(basemap);
graph.FillRectangle(new SolidBrush(Color.White), 0, 0, 200, 60);
Font font = new Font(FontFamily.GenericSerif, 48, FontStyle.Bold, GraphicsUnit.Pixel);
Random r = new Random();
String letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
String letter;
StringBuilder s = new StringBuilder();
for (int x = 0; x < 5; x++) {
letter = letters.Substring(r.Next(0, letters.Length - 1), 1);
s.Append(letter);
graph.DrawString(letter, font, new SolidBrush(Color.Black), x * 38, r.Next(0, 15));
}
Pen linePen = new Pen(new SolidBrush(Color.Black), 2);
for (int x = 0; x < 6; x++) {
graph.DrawLine(linePen, new Point(r.Next(0, 199), r.Next(0, 59)), new Point(r.Next(0, 199), r.Next(0, 59)));
}
basemap.Save(rsp.OutputStream, ImageFormat.Gif);
rsp.End();
}
public void App_EndRequest(Object obj, EventArgs e) {
HttpApplication app = (HttpApplication)obj;
HttpContext ctx = app.Context;
HttpResponse rsp = ctx.Response;
rsp.Write("我来自Application End Request");
}
public void Dispose() {
}
}
}
分享到:
相关推荐
HttpModule对于深入理解Asp.Net的工作原理至关重要,因为它们在处理页面请求时扮演着重要角色。 首先,我们来看一下HttpModule的基本概念。一个HttpModule是一个实现了IHttpModule接口的类,这个接口有两个主要方法...
在这个主题中,我们将深入探讨ASP.NET架构中的两个关键组件:HttpHandler和HttpModule。 **HttpHandler**是ASP.NET处理HTTP请求的核心组件。每个HTTP请求都会被路由到一个特定的HttpHandler,它负责处理特定类型的...
在ASP.NET中,可以创建自定义的HttpHandler或HttpModule来处理这些请求,或者在控制器(Controller)中添加相应的方法。 前端方面,可以使用ASP.NET AJAX来实现异步提交评论,提高用户体验。AJAX允许在不刷新整个...
1. **ASP.NET架构**:ASP.NET框架包括几个关键组件,如ASP.NET页面生命周期、HttpApplication、HttpModule和HttpHandler。页面生命周期管理着从请求到达服务器到响应返回客户端的整个过程,包括初始化、加载、验证、...
在ASP.NET中,编程模型主要包括HttpApplication、HttpModule、HttpHandler和相关事件的执行顺序。以下是对这些概念的详细解释: 1. **HttpApplication**: - HttpApplication对象是ASP.NET应用程序的核心,它协调...
在ASP.NET中实现静态页生成,可以通过使用aspnet_compiler工具进行预编译,或者在代码中使用HttpHandler或HttpModule来动态生成静态页。同时,可以结合IIS的URL重写模块,将动态URL映射到静态HTML文件,以达到SEO...
ASP.NET是微软公司推出的一种基于.NET Framework的Web应用程序开发平台,它为开发者提供了构建动态、数据驱动的Web应用的强大工具和框架。在这个"ASP.NET经典小案例"中,我们可以期待学习到一系列实用的编程技巧和...
此PPT讲述了Asp.Net WebAPI及相关Web服务技术发展历史。 共80多页,Asp.Net WebAPI在讲到第36页的时候才会出现,因为这个技术不是凭空产生的,它有着自己的演变进化的历史。我们要先弄清它从哪里来的?然后再说它能...
ASP.NET 是微软开发的一款用于构建Web应用程序的框架,它提供了丰富的功能和工具,使得开发者能够高效地构建动态网站、Web应用和服务。在这个“ASP.NET封装功能整理”中,我们将深入探讨一些关键的ASP.NET特性、组件...
5. **HTTP响应处理**:理解ASP.NET如何通过HttpHandler或HttpModule来处理HTTP请求并生成RSS响应。 6. **自定义RSS输出**:根据项目描述,可能涉及到两种不同的RSS生成逻辑,这将有助于理解在不同场景下如何调整RSS...
***是一种流行的服务器端Web应用开发框架,通过HTTP模块(HttpModule)可以进行各种请求处理和响应修改,例如,当项目中需要在很多页面上使用一个共同的参数(比如cid)时,我们可以使用HttpModule在URL地址上自动...
ASP.NET 防止 SQL 注入攻击的方法有很多,这些方法包括参数法防注入、传统的笨一点的办法、HttpModule 实现防sql注入、SqlFilter 防止 SQL 注入、validation 防止 SQL 注入等。只有通过使用这些方法,才能有效地防止...
开发者可能使用ASP.NET的HttpHandler或HttpModule来处理视频请求,实现视频的分段传输和动态码率调整。此外,系统可能还集成了视频转码服务,将不同格式的视频转换为适应网络播放的格式。 课件上传下载功能需要考虑...
开发者可以通过查看源代码学习如何处理HTTP请求,创建自定义的HttpHandler或HttpModule,以及如何使用ASP.NET MVC或Web API框架来构建RESTful服务。 2. **Web版Client工程** 这个工程可能是一个基于浏览器的应用,...
- **静态化**: 要生成静态HTML,ASP.NET可以使用如`HttpHandler`或`HttpModule`等技术,在页面渲染完成后保存为HTML文件。这些文件可以存储在特定目录下,供后续请求直接返回。 3. **相关文件解析** - `Default....
HttpModule 是 ASP.NET 管道中的可插拔组件,它们可以拦截请求,执行预处理或后处理操作。例如,身份验证、授权、状态管理等常见任务可以通过 HttpModule 实现。而 HttpHandler 是处理特定 HTTP 请求类型的最终...
HttpModule是ASP.NET框架中的一种中间件,它是一个.NET类,实现了IHttpModule接口。每当有HTTP请求到达Web服务器时,HttpModule都会有机会执行其预定义的逻辑,无论是请求开始、结束,还是在请求处理的中间阶段。 ...
接下来,书中会深入讲解ASP.NET的各个核心模块,如HttpModule和HttpHandler。HttpModule是处理HTTP请求的入口点,可以用于实现身份验证、日志记录等功能。HttpHandler则负责处理特定类型的请求,如处理图片或动态...
ASP.NET是微软公司开发的一种用于构建Web应用程序的框架,它基于.NET Framework,为开发者提供了丰富的功能和工具,简化了Web应用的开发过程。本教程针对ASP.NET的基础使用,结合C#编程语言,旨在帮助初学者快速掌握...