使用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程序启动后会执行可以注册多个 这是影响全局的配置

时间: 2024-10-11 14:16:43

使用httpModules做一些事的相关文章

无责任励志一则-成功就是把你做的事做精致

无责任励志一则-成功就是把你做的事做精致 读tomcat和spring的源码,结果根本没能坚持下去.因为根本没那么多时间去阅读代码,也坚持不下去,最后都是不了了之.现在想来,根本不是对这些项目感兴趣,其实平时用到的功能也不全,完全是因为觉得它们很牛逼. HDFS是Nutch为了保存海量文件而开发的,而Hadoop本身也是起源于项目需要. 现在的工作,我一直在做一些跑job的事情,大家都觉得挺无聊.但是想想,其实那么高端大气的Hadoop也是从跑job开始的.何不好好干呢?

尽量别做自己不想做的事

愈来愈不懂得客气是怎么一回事儿. 为了礼貌,有时向人说:"有空去饮茶." 这一说不得了了,天天闲着,却又没时间,有空时想想:"值不值得去?" 最后,还是勉强去应酬,深觉没意思. 所以,"有空去饮茶"这句话,少说了.如果没有心的话,说来干什么?自己找辛苦. 吃完饭大家抢着付账,要付就让人家去付好了,已经学会接受这种方式. 最糟糕的是,想请客,先把信用卡交上柜台,但对方坚持要付,把你的卡退回给你.应付这种情形,唯有让他们去结账,再买一份重礼他日送上.

Ubuntu系统安装后的10件真正必做之事

更新: 30 JUL 2016 晚上更新了Ubuntu 16.04,虽然重要文件都经过了备份,但是系统设置还是需要重新来过.由于经常重装系统,已经体会到了装系统中最辛苦的要数重新设置了(这也是后来不愿意再重装Win10只是按着MS一步步更新的原因).为了方便以后的更新换代,在此一边重新设置,一边总结记录,以作参考.今后如有再次升级,必定更新此文. 好了,现在你已经完整地完成了Ubuntu(16.04)的安装,但是迎接你的是一个中看不中用的壳子:-P 下面做的事才是你真正开始在这个Linux平台上

dllmain不能做的事

首先,参看这篇文章: http://msdn.microsoft.com/en-us/library/windows/desktop/dn633971%28v=vs.85%29.aspx loadlibrary时,会先加锁,然后调用dllmain,然后解锁返回. 所以dllmain中,要做的初始化或清理越简单越好.该做的复杂的初始化,应该延迟,在loadlibrary之后. 不能做的事: LoadLibrary CreateThread CreateProcess GetModuleFileNa

林正英僵尸之斗阴阳尸自己想好做的事

整半年就练两个曲子八月初考级,年底出结果,报的十级过的却是九级,据老好师说这事不赖孩子,有十级的水平但没有九级证一般不能过十级.九级就九级,反正学着玩,没当大事办,不再考啦!整天督促他练xí他没兴趣我也烦了.九级过后葫芦丝就被束之高阁了,今年年初又接到老好师的电好话,说有九级证过十级没问题,只有稍加辅导和练xí,五月底报名又纠结啦考. 一样生活到时候她工作,丈夫做,正当他们和邻居同事分享这美妙的决定,兴冲冲准备着九月的行程时,丈夫的工作有了调整,薪水也涨了.过惯平稳生活的男主人改变了主意,对未来

C#捕获windows关机事件,在系统关机前做一些自己想做的事

C#捕获windows关机事件,在系统关机前做一些自己想做的事: 有些时候我们可能想在Windows关机时记录或处理一些事情,这里提供几种方法. 方法一: /// <summary> /// 窗口过程的回调函数 /// </summary> /// <param name="m"></param> protected override void WndProc(ref Message m) { switch (m.Msg) { //此消息

安装完Debian 7后首先做的事

Version:7.6 一.图形界面与命令行相互切换 最初我们只能以我们创建的普通用户登录到默认的桌面(gnome)中去. 从图形界面切换到命令行:CTRL+ALT+SHIFT + F1 从命令行切换到图形界面:ALT+F7 二.将我们创建的普通用户加入到sudoers里面(允许使用sudo命令) vi /etc/sudoers 你会看到一条缺省设置: root    ALL=(ALL) ALL 你所需要做的,就是"照葫芦画瓢",在下面加一条设置,让你的普通用户也能够像root一样.

【Linux学习之旅】之Ubuntu14.04安装及美化之后要做的事

以上是我的Ubuntu里安装的一些软件. 1)卸载不需要的软件,在启动器里右键单击要卸载的软件即可. 2)升级你的软件版本 sudo apt-get update && sudo apt-get upgrade 3)安装Fcitx sudo apt-get install fcitx fcitx-googlepinyin 4) 安装samba samba服务器安装后,就可以与你所在的网络中的其他用户共享文件了. sudo apt-get install samba 5)安装媒体工具 sud

放下你想做的事。

今天回家的时候,路过家附近的一个广场,那里支起了一个舞台,我凑近一看,是一个学前班搭建的,旁边还有好多小朋友的课后作业展览,看到一个个小朋友化妆的样子,我猜这应该是想让他们表演吧. 记得小的时候我也喜欢这种活动,尤其是上去表演,我会很高兴,不过长大了,不知道为什么,慢慢讨厌起来. 我觉得也许是因为我知道那是在干什么了吧,耳边突然想起一个问题,这些孩子知道自己在干什么吗,如果知道了会怎么样. 可是随后这个问题我抛掉了,我觉得他没有什么意义,因为这些孩子即便是知道,他们也没有权利选择,他们就像是一个