asp.net-mvc – MVC 3中的MvcApplication.Modules令人惊讶地空洞

我很惊讶在MvcApplication.Init中,Modules集合中只有一个条目,名为“__ASP_IntegratedDynamicModule_Shim”.在我的webforms应用程序中,大约有13个模块,其中一个是“FormsAuthentication”.

在我的webforms应用程序中,我重写HttpApplication.Init,然后使用Modules [“FormsAuthentication”]来获取FormsAuthenticationModule并连接到其Authenticate事件以替换我自己的处理程序.我现在不知道如何做到这一点,我正在转向MVC 3.

表单auth模块显然在我的管道中运行,因为身份验证模式=“表单”工作正常(我可以使用标准的FormsAuthentication技术登录和注销).我正在使用带有集成ASP.NET 4.0管道的IIS 7.

还有人注意到这个吗?我可能只是在做一些非常愚蠢的事情……

最佳答案 在集成管道中,您的Init()方法将多次运行.由于MVC 3将自身挂钩到ASP.NET管道的方式,对Init()的第一次调用可能包含一个空模块集合.后续调用应包含您正在寻找的模块.

我建议修改你的Init()代码,说明模块[“FormsAuthentication”]是否不存在,no-op.您的代码最终将再次被调用,您最终将能够挂钩该事件.

点赞