gpt4 book ai didi

c# - 挂接到 HttpModule 中的 Application_Start

转载 作者:可可西里 更新时间:2023-11-01 08:52:15 25 4
gpt4 key购买 nike

我正在实现一个简单的 HttpModule,我希望在 Web 应用程序启动时运行一些代码。但是我惊讶地发现我通常在 Global.asax 中使用的 Application_Start 事件在 HttpModule 中不可用。这是正确的,还是我遗漏了什么?

如何从 HttpModule 连接到 Application_Start 事件?

更新:
我已经找到使用 Init 事件的简单解决方案,但它对我来说仍然有点奇怪。

最佳答案

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

与其他只写/相信他们读到的东西相反,我已经完成了自己的部分,发现可以使用 HTTP 模块处理应用程序启动。这确实有点 hack,但它可靠地工作。这绝对不是某些人应该避免的事情,因为我也在 MS 模块中看到过它(即 Sharepoint 2010 SPRequestModule)我的这篇博文 (Writing a custom IHttpModule that handles Application_Start event) 将为您提供所需的所有信息了解这件事。我自己做过,而且很管用。但是在使用公共(public)资源时你必须小心一点,因为你的应用程序可能会开始表现得很奇怪。为避免这种情况,我建议您阅读 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 来 Hook 任意应用程序的启动事件。这样做。它会起作用。

关于c# - 挂接到 HttpModule 中的 Application_Start,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2779137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com