c# – 在HttpModule中挂接到Application_Start中

我正在实现一个简单的HttpModule,我想在Web应用程序启动时运行一些代码.但是我很惊讶地发现,通常来自Global.asax的Application_Start事件不能从HttpModule获得.这是正确的,还是我在这里遗漏的东西?

如何从HttpModule钩入Application_Start事件?

更新:
我使用Init事件来简单的解决方案,但是它仍然对我有点好笑.

解决方法

您可以使用HttpModule来处理应用程序启动事件

与其他人相反,只写/相信他们阅读的内容,我已经完成了自己的工作,发现可以使用HTTP模块处理应用程序开始.这真的是一个黑客,但它可靠地工作.这绝对不是人们应该避免的事情,因为我已经在MS模块中看到了这一点(即Sharepoint 2010 SPRequestModule)我的这个博客(Writing a custom IHttpModule that handles Application_Start event)将为您提供您需要了解的所有信息.我自己做了,它只是工作.但是,在使用常见资源时您必须要小心,因为您的应用程序可能开始行为奇怪.为了避免这种情况,我建议你阅读我的additional blog post,这就解释了为什么会发生这种情况,以及如何避免这种情况.

如果您希望它也是线程安全的,您还可以锁定执行,然后在应用程序启动时标记模块.这是最安全的做法.

private static bool isstarted = false;
private static object moduleStart = new Object();
...
if (!isstarted)
{
    lock(moduleStart)
    {
        if (!isstarted)
        {
            // handle aplication start
            ...
            isstarted = true;
        }
    }
}

我创建了我自己的库,它挂钩到现有的应用程序,如Sharepoint 2010.我不想改变Sharepoint的Global.asax现在吗?使用博客文章中解释的技术,我能够勾勒出来.容易.

我想这正是你一直在寻找的.通过在web.config添加一个模块来挂起任意应用程序的启动事件.这样做它会奏效

相关文章

原文地址:http://msdn.microsoft.com/en-us/magazine/cc163...
前言 随着近些年微服务的流行,有越来越多的开发者和团队所采...
最近因为比较忙,好久没有写博客了,这篇主要给大家分享一下...
在多核CPU在今天和不久的将来,计算机将拥有更多的内核,Mic...
c语言输入成绩怎么判断等级
字符型数据在内存中的存储形式是什么