我的问题是相似但不完全相同:HttpModule.Init - 安全地添加HttpApplication.BeginRequest处理器在IIS7集成模式
Why can't my host (softsyshosting.com) support BeginRequest and EndRequest event handlers?(我也看到了mvolo博客中引用文献)
的目标是成功地钩HttpApplication.BeginRequest在IHttpModule.Init事件(或任何地方内部的模块),使用通常的HTTP模块经由system.webServer配置集成,即一个不:
- 侵入的Global.asax或
覆盖HttpApplication(该模块旨在自我包含&可重复使用,例如,我有这样的配置):
<system.webServer> <validation validateIntegratedModeConfiguration="false"/> <modules> <remove name="TheHttpModule" /> <add name="TheHttpModule" type="Company.HttpModules.TheHttpModule" preCondition="managedHandler" />
至此,任何策略,我一直试图监听器连接到HttpApplication.BeginRequest导致的两两件事之一,症状1是的BeginRequest永远不会触发,或症状2是以下异常大干快上的所有管理请求扔了,我不能从用户代码赶上&处理:
Stack Trace:
[NullReferenceException: Object reference not set to an instance of an object.]
System.Web.PipelineModuleStepContainer.GetEventCount(RequestNotification notification, Boolean isPostEvent) +30
System.Web.PipelineStepManager.ResumeSteps(Exception error) +1112
System.Web.HttpApplication.BeginProcessRequestNotification(HttpContext context, AsyncCallback cb) +113
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +616
注释掉app.BeginRequest += new EventHandler(this.OnBeginRequest)
在初始化过程中停止的除外。 Init根本没有引用Context或Request对象。
我曾尝试:
- 删除所有引用HttpContext.Current项目的任何地方(仍然症状1)
- 测试去除我OnBeginRequest方法体的所有代码,以确保问题不是内部的方法(=异常)
- 嗅探堆栈跟踪并仅调用app.BeginRequest + = ...如果堆栈未由InitializeApplication启动(= BeginRequest未启动)
- 只调用app.BeginRequest + =第二次通过Init(= BeginRequest不发射)
任何人都知道一个好方法吗?有没有一些间接的策略来挂钩Application_Start(看起来不太可能)? a)可以从模块的构造函数或Init方法中挂钩的另一个事件,以及b)随后是安全地附加BeginRequest事件处理程序的另一个事件?
感谢很多
(HttpApplication的应用程序)',我称之为'app.BeginRequest + =新的EventHandler(this.OnApplication_BeginRequest)'。然后,我使用类级静态布尔_initted来防止多次添加处理程序。这就是为什么这种情况让我感到不安的原因。 – 2010-09-14 21:21:48
这里同样的问题。我也发布到IIS站点上的一个主题,希望微软的某个人可能会有一个答案:http://forums.iis.net/p/1164977/1972908.aspx – 2011-02-24 01:03:14
任何解决方案? 我可以添加一个httpModule到任何ASP.NET应用程序。但是,当试图将IHttpModule添加到SharePoint 2013站点(基于.NET 4.0)时,我得到完全相同的错误。一旦附加到BeginRequest事件,就会发生该问题。 – lapsus 2013-09-19 13:12:53