IHttpModule相对来说,是一个网页的添加

IHttpHandler相对来说,却是网页的替换

先建一个HandlerDemo的类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace Http_Handler_Model
{
public class HandlerDemo : IHttpHandler
{
/*
这个IsReusable的true是可以提高效率但是,会线程不安全
IHttpHandler实例可以再次使用 false,会安全一些,效率会低一些
IHttpHandler的实例就不能使用
*/
public bool IsReusable => true; public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/html";
context.Response.Write("<h2>这是HandlerDemo做出来的</h2>");
}
}
}

在建一个Module的类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace Http_Handler_Model
{
public class Modules : IHttpModule
{
public void Dispose()
{ } public void Init(HttpApplication context)
{
//添加一个开始的事件,和一个结束的事件
context.BeginRequest += Context_BeginRequest;
context.EndRequest += Context_EndRequest;
} private void Context_EndRequest(object sender, EventArgs e)
{
HttpApplication httpApplication = sender as HttpApplication;
httpApplication.Response.Write("<h2>这是开始页面</h2>");
} private void Context_BeginRequest(object sender, EventArgs e)
{
HttpApplication httpApplication = sender as HttpApplication;
httpApplication.Response.Write("<h2>这是结束页面</h2>");
}
}
}

把这两个类建完了,就是添加到配置文件中



打开你当前项目的这个配置文件

添加这些



这里面配置了handlers和modules

type的值是:命名空间.(点)你的类

path的值是:你的作用域,我这里的作用域是某个文件夹下面的aspx

 <system.webServer>
<handlers>
<add name="handlers" path="Handler_Test/*.aspx" verb="*" type="Http_Handler_Model.HandlerDemo"/>
</handlers>
<modules>
<add name="modules" type="Http_Handler_Model.Modules"/>
</modules>
</system.webServer>

ModuleDemo的aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ModelsDemo.aspx.cs" Inherits="Http_Handler_Model.ModelsDemo" %>

<!DOCTYPE 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>
这个是modules的样例
</div>
</form>
</body>
</html>

效果图

这里添加了刚才的Modules类的操作

某个文件夹下面的aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="HandlerDemo.aspx.cs" Inherits="Http_Handler_Model.Handler_Test.HandlerDemo" %>

<!DOCTYPE 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>
这是Test被替换的页面
</div>
</form>
</body>
</html>

显示效果

这里没有代码中的这是Test被替换的页面,而是HandlerDemo的操作

有不明白的欢迎评论

ASP.NET中IHttpHandler与IHttpModule的区别(带样例说明)的更多相关文章

  1. asp.net中virtual和abstract的区别

    这篇文章主要介绍了asp.net中virtual和abstract的区别,较为详细的分析了virtual与abstract的概念与具体用法,并以实例的形式予以总结归纳,需要的朋友可以参考下 本文实例分 ...

  2. asp.net中virtual和abstract的区别分析

    这篇文章主要介绍了asp.net中virtual和abstract的区别,较为详细的分析了virtual与abstract的概念与具体用法,并以实例的形式予以总结归纳,需要的朋友可以参考下 本文实例分 ...

  3. (转)asp.net中Literal与label的区别

    asp.net中Literal与label的区别 一.Literal Web 服务器控件概述(摘于MSDN) 可以使用 Literal Web 服务器控件作为页面上其他内容的容器.Literal 最常 ...

  4. 【ASP.NET】IHttpHandler和IHttpModule

    上篇文章我们主要讲了HttpApplicatiion管道事件,那么我么如何处理这些管道事件呢,以及请求在ASP.NET是如何执行的呢,我们来了解一下IHttpHandler和IHttpModule 引 ...

  5. Asp.net 中 OnClientClick 与 OnClick 的区别

    OnClientClick 是客户端事件处理方法,一般采用JavaScript来进行处理,也就是直接在IE端运行,一点击就运行. OnClick 是服务器端事件处理方法,在服务器端也就是IIS中运行, ...

  6. 在ASP.NET中,<%= %>和<%# %>有什么区别

    asp.net中<%#%>出现在repeater gridview等控件中.用以绑定控件的datasource asp.net中<%%>的意思是 上运行c#或者vb代码,比如: ...

  7. asp.net中Literal与label的区别

    Literal 控件表示用于向页面添加内容的几个选项之一.对于静态内容,无需使用容器,可以将标记作为 HTML 直接添加到页面中.但是,如果要动态添加内容,则必须将内容添加到容器中.典型的容器有 La ...

  8. asp.net 中Repeater和Gridview的区别

             Griview:              优点:1.GridView是从WebControl派生出来的,拥有WebControl样式属性,自身会被解析为table,其中的每一行会被 ...

  9. ASP.NET中Page_Load()与Page_Init()的区别

    Page_Init()事件:aspx初始化时触发,只执行一次,常用于页面初始化,并且执行在page_load之前,如果在aspx的程序中需要使用该方法,那么该方法的类需要继承 System.Web.U ...

随机推荐

  1. 设计模式之GOF23解释器模式

    解释器模式Interpreter -是一种不常用的设计模式 -用于描述如何构成一个简单的语言解释器,主要用于使用面向对象语言开发的编译器和解释器设计 -当我们需要开发一种新的语言时,可以考虑使用解释器 ...

  2. C#操作时区转换时遇到的一些问题和解决方法分享

    先上一下自己弄出来的库,.NETCore 2.2环境,以前的老库不在适用了TimeZoneInfo对象要熟悉 /// <summary> /// 获取当前时间戳 /// </summ ...

  3. 2020年腾讯实习生C++面试题&持续更新中(5)

    2020年腾讯实习生C++面试题&持续更新中(5) 大家好呀,我是好好学习天天编程的天天~ 昨天一位小伙伴反馈已经拿到了腾讯offer,很是替小伙伴的激动~ 那今天还是持续给大家分享面经,希望 ...

  4. mysql数据库如何修改密码及权限分配

    如何修改Mysql密码 Mysql用户密码采用md5加密函数加密(单向加密) SELECT PASSWORD('root'); -- *81F5E21E35407D884A6CD4A731AEBFB6 ...

  5. 我的linux学习日记day7

    一.文件权限: r:read 读取文件列表的权限, 数字4表示 w:write 写入.删除.修改的权限,数字2表示 x:execute 进入目录的权限,数字1表示 权限分配:文件所有人.文件所属主.其 ...

  6. 转帖 支撑4.5亿活跃用户的WhatsApp架构概览

    http://www.csdn.net/article/2014-02-27/2818559-an-overview-at-whatsapp's-19b-architecture/2 写的很好,确实牛 ...

  7. OGG FOR BigData(Hive) GoldenGate 性能测试

    版本信息: Oracle GoldenGate Command Interpreter Version 12.2.0.1.160419 OGGCORE_12.2.0.1.0OGGBP_PLATFORM ...

  8. 函数的不同调用方式决定了this的指向不同

    一.函数的不同调用方式决定了this的指向不同,一般指向调用者 1.普通函数   this指向window的调用者        function fn(){            console.l ...

  9. xampp-apache配置

    我安装的软件是xampp-win32-1.8.2-0-VC9-installer 需要配置的文件有 httpd.conf httpd-default.conf httpd-info.conf http ...

  10. DP+容斥 BZOJ1042

    1042: [HAOI2008]硬币购物 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2558  Solved: 1539[Submit][Stat ...