使用httpModules做一些事

httpmodules是http管道处理程序 可以重写接口进行一些在请求到达api接口前做全局处理 

这是一个过滤关键词的例子

using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using System.Reflection;
using System.Web;

namespace WebApplication4
{
    public class FilterForbiddenWordModule:IHttpModule
    {
        void IHttpModule.Dispose() { }

        void IHttpModule.Init(HttpApplication context)
        {
            context.BeginRequest += new EventHandler(OnBeginRequest);
        }

        private static void OnBeginRequest(object sender, EventArgs e)
        {
            var request = (sender as HttpApplication).Request;
            ProcessCollection(request.QueryString);
            ProcessCollection(request.Form);
        }

        private static void ProcessCollection(NameValueCollection collection)
        {
            var copy = new NameValueCollection();
         //   copy.GetType().GetProperty("IsReadOnly").SetValue(copy, false);

            foreach (string key in collection.AllKeys)
            {
                Array.ForEach(
                    collection.GetValues(key),
                    v => copy.Add(key, ForbiddenWord.Filter(v)));
            }
            typeof(NameObjectCollectionBase).GetProperty("IsReadOnly",BindingFlags.Instance | BindingFlags.NonPublic).SetValue(collection, false);
            collection.Clear();
            collection.Add(copy);
        }
    }

    public static class ForbiddenWord
    {
        public static string Filter(string original)
        {
            return original.Replace("关键词", "替换后");
        }
    }
}

配置文件加入该项配置 web程序启动后会执行可以注册多个 这是影响全局的配置

 

转载于:https://www.cnblogs.com/ProDoctor/p/7586463.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值