使用httpModules做一些事
2024-08-31 14:17:43
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程序启动后会执行可以注册多个 这是影响全局的配置
最新文章
- mysql索引 (校验规则引发的血案)
- tomcat7 配置
- divmod(a,b)函数是实现a除以b,然后返回商与余数的元组、eval可以执行一个字符串形式的表达式、exec语句用来执行储存在字符串或文件中的Python语句
- switch语句下的变量声明和定义
- LeetCode124:Binary Tree Maximum Path Sum
- maven 仓库地址:
- json-encode()怎么进行解码呢?
- oracle的基本查询~下
- linux上nagios安装完整版
- 【免费】iPhone上最好用的短信群发软件: 高速短信4.1
- ASP.NET core1.0 EF MYSQL搭建中碰到几个问题记录
- ERROR 1698 (28000): Access denied for user 'root'@'localhost'
- javascript中的自定义属性
- python 集成cython &;&; push 测试pip 仓库
- 第二十二天 logging hashlib re 模块
- 关于公众平台接口不再支持HTTP方式调用的公告
- VS2015+Opencv3.2配置(一次配好)
- (网页)Uncaught ReferenceError: pageImport is not defined
- iOS11 适配
- Python数据结构:栈 队列
热门文章
- 【最短路】【spfa】CDOJ1633 去年春恨却来时,落花人独立,微雨燕双飞
- [BalkanOI2016]Lefkaritika
- 20172333 2017-2018-2 《Java程序设计》第9周学习总结
- 【centOS】【xshell】xshell连接虚拟机上的centOS,操作途中突然断开连接,报错:connect closed by foreign host
- WebSocket 是什么原理?为什么可以实现持久连接?(转载)
- 什么是webview
- [Ubuntu Setup] Ubuntu 13.04 安装 ia32-libs
- iOS:iOS开发系列–打造自己的“美图秀秀”(下)
- CMakeFile命令之file
- Nodejs全站开发学习系列 &; 深入浅出Node学习笔记 &; Spider抓取