asp.net mvc使用IHttpModule拦截所有请求,包括资源文件

目录

HttpApplication 类

 添加App_Code文件夹

MyHttpModel2

Web.config添加配置,在iis模块中生效

项目发布后,察看注册的自定义模块


  • 框架集:.NET Framework 4.7
  • web框架:asp.net mvc 5

HttpApplication 类

HttpApplication 类 (System.Web) | Microsoft Learn

https://learn.microsoft.com/zh-cn/dotnet/api/system.web.httpapplication?view=netframework-4.8.1#examples

定义对 ASP.NET 应用程序内所有应用程序对象公用的方法、属性和事件。 此类是用户在 Global.asax 文件中定义的应用程序的基类。

注解
类的 HttpApplication 实例是在 ASP.NET 基础结构中创建的,而不是由用户直接创建。 类的 HttpApplication 一个实例用于在其生存期内处理多个请求。 但是,一次只能处理一个请求。 因此,成员变量可用于存储每个请求的数据。

应用程序引发可由实现 IHttpModule 接口的自定义模块或 Global.asax 文件中定义的事件处理程序代码处理的事件。 实现 接口的 IHttpModule 自定义模块可以放在 App_Code 文件夹中,也可以放在 Bin 文件夹中的 DLL 中。

HttpApplication在 .NET Framework 版本 3.5 中引入。

备注

在集成模式下运行 IIS 7.0 时,App_Code文件夹或 Bin 文件夹中的自定义模块适用于请求管道中的所有请求。 Global.asax 文件中的事件处理程序代码仅适用于映射到 ASP.NET 处理程序的请求。

 添加App_Code文件夹

需要将MyHttpModel2.cs放到App_Code文件夹中,右键web项目,如图操作,添加App_Code文件夹

MyHttpModel2

using RmtSendArticleHandle;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using WuZiFenGongSiInfomation.Common;namespace kantan_shi_yebu.MyHttpModel
{/// <summary>/// 自定义请求拦截/// </summary>public class MyHttpModel2 : IHttpModule{public void Dispose(){}public void Init(HttpApplication context){//context.AcquireRequestState += Context_AcquireRequestState; ;//context.PostAcquireRequestState += Context_PostAcquireRequestState;context.BeginRequest += Context_BeginRequest;context.Error += Context_Error;}private void Context_Error(object sender, EventArgs e){HttpApplication httpApp = (HttpApplication)sender;HttpContext ctx = HttpContext.Current;var request = ctx.Request;string requestURL = request.Url.OriginalString;WuZiFenGongSiInfomation.Common.LogHelpter.AddLog("请求的url=" + requestURL, null, "MyHttpModel2.Context_Error");var response = ctx.Response;//XSS漏洞拦截,url注入拦截//http://localhost:8034/content/images/*~1*/a.aspx?aspxerrorpath=/                 if (requestURL.Contains("*") || requestURL.Contains("~")){response.StatusCode = 400;response.ContentType = "text/plain; charset=utf-8";response.Write("http 400,不允许特殊符号");ctx.ClearError();}else if (requestURL.Contains(".aspx")){response.StatusCode = 400;response.ContentType = "text/plain; charset=utf-8";response.Write("http 400,不允许请求.aspx页面");ctx.ClearError();}}private void Context_BeginRequest(object sender, EventArgs e){//可以记录所有请求,包括后台请求、静态文件请求urlHttpApplication httpApp = (HttpApplication)sender;HttpContext ctx = HttpContext.Current;var request = ctx.Request;string requestURL = request.Url.OriginalString;WuZiFenGongSiInfomation.Common.LogHelpter.AddLog("请求的url=" + requestURL, null, "MyHttpModel2");}}
}

Web.config添加配置,在iis模块中生效

<system.webServer><validation validateIntegratedModeConfiguration="false"></validation> <security><requestFiltering><requestLimits maxQueryString="102400" maxAllowedContentLength="102400000" /></requestFiltering></security><modules><add name="MyHttpModel2" type="kantan_shi_yebu.MyHttpModel.MyHttpModel2"  /></modules>
</system.webServer>

项目发布后,察看注册的自定义模块

选中站点,在模块中可以看到,已经注册的模块

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/9563.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

gtk_overviewGTK入门

GTK入门 Gtk概述 GUI GUI 含义&#xff1a; &#xff08;Graphics User Interface&#xff09; 图形用户界面&#xff0c; 是计算机与使用者之间的对话接口&#xff0c; 是计算机重要的组成部分&#xff0c; 比如说咱们使用电脑或手机看到的 Windows 的桌面或 wps 软件显示…

gorm-sharding分表插件升级版

代码地址&#xff1a; GitHub - 137/gorm-sharding: Sharding 是一个高性能的 Gorm 分表中间件。它基于 Conn 层做 SQL 拦截、AST 解析、分表路由、自增主键填充&#xff0c;带来的额外开销极小。对开发者友好、透明&#xff0c;使用上与普通 SQL、Gorm 查询无差别.解决了原生s…

传统鞋业如何转型?3D数字化技术让鞋业品牌焕发新机!

数字经济时代&#xff0c;3D数字化技术在各行业都得到广泛应用&#xff0c;这其中&#xff0c;传统的鞋服行业的发展也受到了3D数字化技术的影响&#xff0c;产生了深刻的变化&#xff0c;越来越多的鞋企品牌开始尝试3D数字化营销。 比如&#xff0c;时尚运动品牌VANS就在官网上…

论文AIGC检测让毕业生头疼,如何有效降低AI查重率!

在准备毕业论文的过程中&#xff0c;不知道大家有没有跟我一样&#xff0c;遇到这样棘手的问题。我们都知道在撰写完论文后&#xff0c;进行论文查重是我们必不可少的一步。于是&#xff0c;我拿着论文进行了论文重复率的检测&#xff0c;发现重复率只有2.8%&#xff0c;看到这…

探案录 | KingbaseES+SqlSugar为医疗用户排忧解难

在2024年的初春&#xff0c;某大型三甲医院的CT预约系统上线测试&#xff0c;如同新芽破土&#xff0c;充满了希望与活力。然而&#xff0c;仅仅两天后&#xff0c;一个技术难题如同迷雾中的幽灵&#xff0c;悄然出现&#xff1a;The connection pool has been exhausted…… 福…

三相两电平逆变器的Simulink仿真建模及SPWM

三相两电平逆变器的介绍 三相两电平逆变器的电路结构如下图所示&#xff0c;作为非常基本的电力电子电路&#xff0c;众多教科书中均有对该电路的原理介绍&#xff0c;本文不再对原理进行赘述&#xff0c;主要目的在于提供simulink仿真电路。下图即为三相两电平逆变器电路结构…

图文并茂:解析Spring Boot Controller返回图片的三种方式

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 图文并茂&#xff1a;解析Spring Boot Controller返回图片的三种方式 前言使用Base64编码返回图片使用byte数组返回图片使用Resource对象返回图片图片格式转换与性能对比 前言 在互联网的世界里&…

AI雷达智能销售名片小程序源码系统+企业商城+公司动态 带完整的安装代码包以及安装搭建教程

在数字化时代&#xff0c;企业的销售模式正在经历一场深刻的变革。为了更好地满足市场需求&#xff0c;提升销售效率&#xff0c;罗峰给大家分享一款集AI雷达智能销售名片、企业商城、公司动态于一体的源码系统。该系统不仅配备了完整的安装代码包&#xff0c;还附有详细的安装…

批量自定义重命名,一键添加顺序编号,文件夹管理更高效!

我们经常需要对文件夹进行管理和整理。然而&#xff0c;当面对大量需要改名的文件夹时&#xff0c;手动逐个修改不仅效率低下&#xff0c;还容易出错。那么&#xff0c;有没有一种方法能够批量自定义重命名文件夹&#xff0c;并在名称后自动添加顺序编号呢&#xff1f;答案是肯…

ABC352编程笔记

ABC352 编程笔记 题意&#xff1a;输入&#xff0c;四个数 a , b , c , d a,b,c,d a,b,c,d&#xff0c;若 d d d 在 c , d c,d c,d 之间&#xff0c;则输出 Yes&#xff0c;否则输出 No。 正解&#xff1a;直接判断。 #include <bits/stdc.h> //#define int long lo…

vscode正则匹配技巧

写正则表达式 下面是匹配加粗的单词或空格 \*\*[a-zA-Z\s]*\*\*vscode提取加粗的内容 altenter&#xff0c;再ctrlC复制选中的内容出来

DDD面试题:DDD聚合和表的对应关系是什么 ?(来自蚂蚁面试)

尼恩说在前面&#xff1a; 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业如字节、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格&#xff0c;遇到很多很重要的面试题&#xff1a; DDD 的外部接口调用&#xff0c;应该放在…

深入了解二叉搜索树:原理、操作与应用

文章目录 二叉搜索树二叉搜索树的操作1.查找操作2.插入操作3.查找最大值或者最小值4.删除操作5.前序中序后序遍历 总结 二叉搜索树 形如上图的二叉树就是二叉搜索树&#xff0c;接下来我们来具体阐述一下什么是二叉搜索树。 二叉搜索树的概念&#xff1a;满足左子树的值小于根…

经济学SSCI期刊,中科院3区,IF=2+,难度不大,收稿范围广泛!

一、期刊名称 Information Economics and Policy 二、期刊简介概况 期刊类型&#xff1a;SSCI 学科领域&#xff1a;经济学 影响因子&#xff1a;2.8 中科院分区&#xff1a;3区 出版方式&#xff1a;订阅模式/开放出版 版面费&#xff1a;选择开放出版需支付$3190 三、…

C++ | Leetcode C++题解之第78题子集

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<int> t;vector<vector<int>> ans;void dfs(int cur, vector<int>& nums) {if (cur nums.size()) {ans.push_back(t);return;}t.push_back(nums[cur]);dfs(cur 1, nums);t.po…

yum仓库和NFS网络共享服务

一、yum 1.1yum的定义 yum是一个基于RPM包&#xff0c;构建的软件更新机制&#xff0c;能够自动解决软件包之间的依赖关系。解决了日常工作中的大量查找安装依赖包的时间 为什么会有依赖关系的发生 因为linux本身就是以系统简洁为自身优势&#xff0c;所以在安装操作系统的时…

Docker与Harbor:构建企业级私有Docker镜像仓库

目录 引言 一、本地私有仓库 &#xff08;一&#xff09;基本概述 &#xff08;二&#xff09;搭建本地私有仓库 1.下载registry镜像 2.启动容器 3.上传本地镜像 4.客户端下载镜像 二、Harbor简介 &#xff08;一&#xff09;什么是 Harbor &#xff08;二&#xff…

苹果15能用哪些充电宝?充电宝什么牌子好?好用充电宝排名

随着移动设备的普及和功能的不断强大&#xff0c;我们对于充电宝的需求也越来越高。尤其是对于苹果15用户来说&#xff0c;选择一款兼容性好、性能稳定的充电宝显得尤为重要。在市面上众多充电宝品牌中&#xff0c;如何选择适合苹果15的充电宝&#xff1f;究竟哪个牌子的充电宝…

在线扭蛋机小程序:商家稳占市场的新突破口

近几年&#xff0c;扭蛋机进入了爆发期&#xff0c;动漫、游戏的发展更是推动了市场的发展&#xff0c;我国扭蛋机正在蓬勃发展中。 不过&#xff0c;在市场规模扩大下&#xff0c;扭蛋机行业的竞争力也在同时加大&#xff0c;企业商家需要在市场竞争中寻求发展新思路&#xf…

C#进阶-OleDb操作Excel和数据库

在C#编程中&#xff0c;使用OleDb可以方便地实现对Excel文件和数据库的操作。本文探讨了在C#中使用OleDb技术操作Excel和数据库的策略。文章详述了OleDb的定义、配置环境的步骤&#xff0c;并通过实际代码示例演示了如何高效读写Excel文件和交互数据库。文中还评估了OleDb技术的…