c# – 在HttpModule中挂接到Application_Start中

前端之家收集整理的这篇文章主要介绍了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中添加一个模块来挂起任意应用程序的启动事件.这样做它会奏效

猜你在找的C#相关文章