zoukankan      html  css  js  c++  java
  • ASP.NET自定义模块

    要创建自定义模块,类需要实现IHttpModule接口。这个接口定义了Init和Dispose方法。

    Init方法在启动Web应用程序时调用,其参数的类型是HttpContext,可以添加应用程序处理事件。

    新建类库ModuleSample,新建类SampleModule添加如下代码:

    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Web;
    
    namespace ModuleSample
    {
        public class SampleModule : IHttpModule
        {
            private const string allowAddressesFile = "AllowedAddresses.txt";
            private List<string> allowAddressesList;
            public void Dispose()
            {
                throw new NotImplementedException();
            }
    
            public void Init(HttpApplication context)
            {
                context.LogRequest += new EventHandler(OnLogRequest);
                context.BeginRequest += BeginRequest;
                context.PreRequestHandlerExecute += PreRequestHandlerExecute;
            }
    
            private void BeginRequest(object sender, EventArgs e)
            {
                LoadAddresses((sender as HttpApplication).Context);
            }
            private void LoadAddresses(HttpContext context)
            {
                if (allowAddressesList == null)
                {
                    string path = context.Server.MapPath(allowAddressesFile);
                    allowAddressesList = File.ReadAllLines(path).ToList();
                }
            }
            private void PreRequestHandlerExecute(object sender, EventArgs e)
            {
                HttpApplication app = sender as HttpApplication;
                HttpRequest request = app.Context.Request;
                if (!allowAddressesList.Contains(request.UserHostAddress))
                {
                    throw new HttpException(403, "IP address denied");
                }
            }
            public void OnLogRequest(Object source, EventArgs e)
            {
                //custom logging logic can go here
            }
        }
    }
    

      在WebConfig中配置:

     <system.webServer>
        <handlers>
          <add name="CustomHandler" verb="*" path="CallCustomHandler" type="SampleHandler.CustomHandler,SampleHandler"/>
          <add name="InfoHandler" verb="GET" path="CallInfoHandler.axd" type="SampleHandler.InfoHandler,SampleHandler"/>
        </handlers>
        <modules>
          <add name="SampleModule" type="ModuleSample.SampleModule,ModuleSample"/>
        </modules>
      </system.webServer>
    

      程序执行图:

    运行时

  • 相关阅读:
    如何看linux是32位还是64位
    Linux下,命令 wget 的使用
    express框架目录结构
    怎么在centos中查看某个目录的树结构?
    CentOS minimal版安装图形界面的步骤(自动获取IP)
    微信小程序项目,实现图书搜索组件完善
    微信小程序项目,实现图书搜索高阶组件:
    微信小程序中使用音频组件以及wx:if和hidden的区别
    微信小程序绑定数据以及自定义指令
    微信小程序定义一个组件
  • 原文地址:https://www.cnblogs.com/simen-tan/p/5427562.html
Copyright © 2011-2022 走看看