码迷,mamicode.com
首页 > Web开发 > 详细

使用httpModules做一些事

时间:2017-09-24 10:46:13      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:handle   tar   sys   for   api接口   配置文件   ges   app   private   

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

 

使用httpModules做一些事

标签:handle   tar   sys   for   api接口   配置文件   ges   app   private   

原文地址:http://www.cnblogs.com/ProDoctor/p/7586463.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!