• DAN疼之后上些基础知识自定义HttpModule和httpHandler


    又是DAN疼的一天!!

    木事做,怎么办,自定义点东西。那就拿HttpModule和httpHandler 开刀吧!

    一:自定义HttpModule

      自定义HttpModule需要实现IHttpModule接口,接口里的两个方法 需要在继承类中实现,Init和Dispose方法;init方法有一个参数HttpApplication,也正是这个参数我们可以获取一些属性,或自定义一些处理程序,HttpApplication里有什么可以挖的,这个自己实现以下就可以看到;因为我做的demo,所以在init方法中注册了BeginRequest的处理程序,代码如下:

    public void Init(HttpApplication application)
            {
                application.BeginRequest += new EventHandler(application_BeginRequest);
            }
    
    
     
            void application_BeginRequest(object sender, EventArgs e)
            {
                HttpContext context = (sender as HttpApplication).Context;          
               
                context.Response.Write("自定义配置成功");
            }
    

    程序写完需要在web.config中配置一下,配置很简单

    <httpModules >
          <add name ="MyHttpModule" type ="MyHttpModule.MyHttpModule,WebApplication1"/>
        </httpModules>
    
     

    但是有一点要注意 type ="MyHttpModule.MyHttpModule,WebApplication1"  这个地方  参数是: 命名空间+处理类,程序集;  有时候命名空间和程序集是不同的奥

    二:自定义httpHandler

      同上:需要继承IHttpHandler接口,实现接口中的方法:ProcessRequest和属性:IsReusable(是否缓存的标志)

      代码:

    public class MyHandler : IHttpHandler
        {
    
            public void ProcessRequest(HttpContext context)
            {
                context.Response.Write("<br/>Hello World");
    
            }
    
            public bool IsReusable
            {
                get
                {
                    return false;
                }
            }
        }
    
     

    同样需要在web.config中配置

     <httpHandlers >
          <add verb ="*" type ="WebApplication1.MyHandler,WebApplication1" path ="*.aspx"/>
        </httpHandlers>
    
     

    具体的参数:verb--提交的方式:post,get。。。。*是全部;type:命名空间+处理程序类,程序集名称;path:要处理的文件(可以自定义类型,如:.myfoot,但是需要在iis中配置,基本的aspx 就不用了)

    其实从代码就能看出来  MyHttpModule的init的方法的参数是HttpApplication,而MyHandler方法ProcessRequest的参数是HttpContext,可以断定MyHttpModule发生在MyHandler之前,所以要什么功能一定要在正确的处理程序里写。

    好了,5点33了  下班了,希望高手猛拍!!

  • 相关阅读:
    c# 图片保存为流Stream,再次加载时提示System.ArgumentOutOfRangeException: 要求非负数的解决办法
    VS 2019 Git failed with a fatal error的解决办法
    IIS安全狗卸载后,IIS8.5,网站无法访问的解决方法
    sqlserver 全文检索提高精确度的一个方法
    Win10应用商店打不开的解决办法
    Dapper解析嵌套的多层实体类
    Aspose.Words转换为PDF的时候字体丢失的问题解决
    IIS ASP.NET MVC 上传文件到NAS目录
    windows xp .net framework 4.0 HttpWebRequest 报The underlying connection was closed,基础连接已关闭
    c# 计算中文字节数与JAVA不符的解决方法
  • 原文地址:https://www.cnblogs.com/zhanlang/p/2104487.html
Copyright © 2020-2023  润新知