Jak*_*ade 10 .net c# vb.net asp.net httpmodule
我正在实现一个简单的HttpModule,我想在Web应用程序启动时运行一些代码.但我很惊讶地发现我通常从Global.asax使用的Application_Start事件不能从HttpModule获得.这是正确的,还是我错过了什么?
如何从HttpModule挂钩到Application_Start事件?
更新:
我使用Init事件来解决简单的问题,但它对我来说仍然有点滑稽.
Rob*_*nik 29
HttpModule来处理应用程序启动事件与其他只写/相信他们阅读的内容相反,我已经完成了自己的工作,并发现可以使用HTTP模块处理应用程序启动.这真的是一个黑客,但它可靠地工作.它绝对不是某人应该避免的东西,因为我也在MS模块中看到它(即Sharepoint 2010 SPRequestModule)我的这篇博文(编写一个处理Application_Start事件的自定义IHttpModule)将为您提供您需要了解的所有信息这个.我自己完成了它,它只是有效.但是在使用公共资源时必须要小心,因为您的应用程序可能会开始表现得很奇怪.为了避免这种情况,我建议你阅读我的另一篇博文,解释为什么会发生这种情况以及如何避免这种情况.
如果您希望它也是线程安全的,您还可以锁定执行,然后在应用程序启动时标记模块.这是最安全的方式.
private static bool isStarted = false;
private static object moduleStart = new Object();
...
if (!isStarted)
{
lock(moduleStart)
{
if (!isStarted)
{
// handle aplication start
...
isStarted = true;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我创建了自己的库,可以挂钩现有的应用程序,比如Sharepoint 2010.我现在不想改变Sharepoint的Global.asax吗?使用博客文章中解释的技术,我能够加入其中.容易.
我想这正是你一直在寻找的.通过添加模块挂钩到任意应用程序的启动事件web.config.这样做吧.它会工作.
| 归档时间: |
|
| 查看次数: |
9001 次 |
| 最近记录: |