使用httpModules做一些事

Posted xuelei被占用了

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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程序启动后会执行可以注册多个 这是影响全局的配置

 

以上是关于使用httpModules做一些事的主要内容,如果未能解决你的问题,请参考以下文章

httphandler和httpmodule的区别

HttpHandler与HttpModule及实现文件下载

如何使用 Android 片段?

关于babel,你应该知道的一些事

聊聊视频播放那些事1

#.NET EF中HttpModule与HttpHandler对象的基本使用