ASP.NET 模块与处理程序

原创 2018年04月15日 17:24:40

HttpHandler(处理程序) 和 HttpModule(托管模块)

ASP.NET其请求处理过程是基于管道模型的,这个管道模型由多个HttpModule和HttpHandler组成。

在整个生命周期中,它们大致的执行过程是这样的:client端发送页面请求,被IIS的某个进程截获,它根据申请的页面后缀(.aspx)不同,调用不同的页面处理程序(.asp->asp.dll;.aspx->ISAPI.dll),而页面处理程序在处理过程中,则要经历 HttpModule,HttpHandler的处理,前者HttpModule用于页面处理前和处理后的一些事件的处理,后者HttpHandler进行真正的页面处理。

     针对水印的全局实现

        Default.aspx页面代码:

[csharp] view plain copy
  1. <body>    
  2.     <form id="form1" runat="server">    
  3.     <div>    
  4.         <asp:Image ID="Image1" runat="server" ImageUrl="~/ProductImgs/1.jpg" />    
  5.         <asp:Image ID="Image2" runat="server" ImageUrl="~/ProductImgs/2.jpg" />    
  6.         <asp:Image ID="Image3" runat="server" ImageUrl="~/ProductImgs/3.jpg" />    
  7.         <asp:Image ID="Image4" runat="server" ImageUrl="~/ProductImgs/4.jpg" />    
  8.         <asp:Image ID="Image5" runat="server" ImageUrl="~/ProductImgs/default.jpg" />    
  9.     </div>    
  10.     </form>    
  11. </body>    

         Handler1.ashx页面:

        

[csharp] view plain copy
  1. using System;    
  2. using System.Collections.Generic;    
  3. using System.Linq;    
  4. using System.Web;    
  5. using System.IO;    
  6. using System.Drawing;    
  7. using System.Drawing.Imaging;    
  8.     
  9. namespace WebApplication1    
  10. {    
  11.     /// <summary>    
  12.     /// Handler1 的摘要说明    
  13.     /// </summary>    
  14.     public class Handler1 : IHttpHandler    
  15.     {    
  16.         private string IMGS = "/~ProductImgs/";    
  17.         public void ProcessRequest(HttpContext context)    
  18.         {    
  19.             Image img;    
  20.             string path = context.Request.PhysicalPath;     
  21.             if (File.Exists(path))    
  22.             {    
  23.                 img=Image.FromFile(path);    
  24.                 Graphics graphics = Graphics.FromImage(img);    
  25.                 graphics.DrawString("版权所有",new Font("宋体",20),Brushes.Red,img.Width-50,img.Height-20);    
  26.                 graphics.Dispose();    
  27.             }    
  28.             else    
  29.             {    
  30.                 img = null;    
  31.             }    
  32.             context.Request.ContentType = "image/jpeg";    
  33.             img.Save(context.Response.OutputStream, ImageFormat.Jpeg);    
  34.             img.Dispose();    
  35.             context.Response.End();    
  36.         }    
  37.     
  38.         public bool IsReusable    
  39.         {    
  40.             get    
  41.             {    
  42.                 return false;    
  43.             }    
  44.         }    
  45.     }    
  46. }    

 

ASP.NET处理程序和模块(一)

 ASP.NET处理程序和模块                    ASP.NET HTTP 处理程序(Handler)是响应对 ASP.NET Web 应用程序的请求而运行的程序         ...
  • wangle4717
  • wangle4717
  • 2010-05-18 21:49:00
  • 1977

IIS配置遇到的问题—— 处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHan

开发web项目时需要安装IIS,在安装好IIS的Windows7本上发布asp.net网站时,web程序已经映射到了本地IIS上,但运行如下错误提示“处理程序“PageHandlerFactory-I...
  • u010355520
  • u010355520
  • 2014-05-06 15:17:22
  • 527

application Initialization设置导致处理程序ExtensionlessUrlHandler-Integrated-4.0在其模块列表中有一个错误模块问题的解决

近几天,本地电脑的一个网站每次编译后都会出现如下错误: HTTP 错误 500.21 - Internal Server Error 处理程序“ExtensionlessUrlHandler-Inte...
  • sxf359
  • sxf359
  • 2017-07-28 11:41:44
  • 5713

HTTP 错误 500.21 - Internal Server ErrorHTTP

应用程序“DEFAULT WEB SITE/WINDRP_TB/TBFXWS”中的服务器错误Internet Information Services 7.5 错误摘要 HTTP 错误 500.2...
  • wmg494005678
  • wmg494005678
  • 2013-02-06 11:19:32
  • 10487

IIS7报错:如果要使用托管的处理程序,请安装 ASP.NET

进入CMD 输入如下命令即可 "%WINDIR%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe" -iru -enable...
  • aofengdaxia
  • aofengdaxia
  • 2015-04-13 17:35:45
  • 5523

资源文件打包到Web自定义控件中应用

 ASP.NET 2.0提供的Web Resources管理模型,很好的解决了image、css、script等外部资源的管理问题。解决方案如下: 1.设置你需要打包的文件的Build Action ...
  • zengzhe
  • zengzhe
  • 2008-03-28 10:07:00
  • 1398

IIS安装报错:使用了托管处理程序,但是未安装或未完整安装 ASP.NET

今天在使用IIS部署网站的时候,出现如下错误, 解决方案: 打开CMD窗口,执行以下命令: "%WINDIR%\Microsoft.NET\Framework...
  • u013519551
  • u013519551
  • 2017-06-09 11:05:10
  • 1812

win7 IIS7 发布网站 出现 "处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”"

今天安装了windows7 开发web项目需要安装IIS,当安装完以后,web程序已经映射到了本地IIS上,运行出现如下错误提示 处理程序“PageHandlerFactory-Integrate...
  • henulwj
  • henulwj
  • 2012-08-29 19:01:37
  • 3502

在IIS中访问APS页面时提示:“最可能的原因使用的托管的处理程序,但是未安装或未完整安装asp.net“

打开CMDpwkk "%WINDIR%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe" -iru -enable
  • feierky
  • feierky
  • 2014-05-04 17:33:31
  • 4458

IIS应用程序池托管管道模式设置为集成后报错“ExtensionlessUrlHandler-Integrated-4.0”在其模块列表中有一个错误模块“ManagedPipelineHandler”

出错机器: Win7 sp1 32位  IIS 6.1 已安装VS2012 解决办法: 运行命令: C:\Windows\Microsoft.NET\Framework\v4.0.30319\as...
  • jifgjifg
  • jifgjifg
  • 2015-10-16 14:25:15
  • 2089
收藏助手
不良信息举报
您举报文章:ASP.NET 模块与处理程序
举报原因:
原因补充:

(最多只允许输入30个字)