惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

L
LangChain Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
雷峰网
雷峰网
量子位
V
V2EX
S
SegmentFault 最新的问题
月光博客
月光博客
博客园 - 【当耐特】
Hugging Face - Blog
Hugging Face - Blog
V
Visual Studio Blog
大猫的无限游戏
大猫的无限游戏
T
Tailwind CSS Blog
博客园_首页
博客园 - Franky
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
美团技术团队
Y
Y Combinator Blog
The Cloudflare Blog
C
Check Point Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
腾讯CDC
B
Blog
Stack Overflow Blog
Stack Overflow Blog
P
Proofpoint News Feed

博客园 - 禹过天晴

TextControl技术互助 博文阅读密码验证 - 博客园 (学)如何在Oracle中一次执行多条sql语句 (学)条件性唯一性索引的建议 阿里云服务器IIS启用HTTPS协议(转) (学)递归查找窗体中全部控件 (原)用WebBrowser浏览Office Web Apps Server,除去“下载”按钮 博文阅读密码验证 - 博客园 如何让Oracle表及字段显示为区分大小写(转) (转)SQL Server 列转行 博文阅读密码验证 - 博客园 (转)基于SQL的EAN13、ENA8条形码校验位生成 博文阅读密码验证 - 博客园 (原)将Oracle迁移到SQLServer (转)Sql Server 快速查看表结构(表描述及字段说明) 博文阅读密码验证 - 博客园 (转)SQL查询案例:多行转换为一行 (转)找回vss超级管理员密码 (转)SqlServer里DateTime转字符串
(转)不通过web.config在运行时注册httpmodules
禹过天晴 · 2018-09-16 · via 博客园 - 禹过天晴

https://blog.csdn.net/kufeiyun/article/details/7763070

在asp.net4 中,我们知道可以不用任何配置让一个方法在appdomain中尽早执行,在上篇文章中已经实现,非常简单,只用定义一个class:

public class PreApplicationStartCode {

public static void Start() {

}

}

然后添加一个程序集级别属性指向它:

[assembly: PreApplicationStartMethod(typeof(PreApplicationStartCode),"Start")]

随着MVC3和asp.net web pages的发布,还有另外一个不用配置文件而是程序动态注册HttpModule的好方法:RegisterModule()API,可悲的是,这个方法隐藏太深,很少用到并且也很难发现(这个API下个版本有可能会被清除掉)

结合两种技术,就可以随心所欲的动态注册module了

public class PreApplicationStartCode {

public static void Start() {

    Microsoft.Web.Infrastructure.DynamicModuleHelper.DynamicModuleUtility.RegisterModule(typeof(MyModule));

}

}

呵呵,是不是藏得很深啊

传入的参数类型就是标准的IHttpModule,例如

class MyModule : IHttpModule {

public void Init(HttpApplication context) {

    context.BeginRequest += (sender, e) => {

        var response = ((HttpApplication)sender).Response;

        response.Write("MyModule.BeginRequest");

    };

}

public void Dispose() { }

}

这个方法的优点就是:你可以创建一个封装好的程序集,编译好后把放到一个web app的bin文件夹下,自动完成注册

部分信任环境下也可很好的工作

代码可以从此下载  代码  或者 代码.