gpt4 book ai didi

asp.net - 订阅 Application_BeginRequest

转载 作者:行者123 更新时间:2023-12-04 18:24:25 27 4
gpt4 key购买 nike

有没有办法从 Global.asax 订阅 HttpApplication 的 BeginRequest 事件?

我想要做的是向 Global.asax 的 Application_Start 方法添加一行代码,然后它将订阅我拥有的对象到 BeginRequest 和 EndRequest 方法。

我知道这可以通过 HttpModules 来完成,但由于各种原因,我不能使用 HttpModules,我不会进入。

目的是能够将同一行代码添加到多个网站的 global.asax 页面。

最佳答案

我做了更多的挖掘,并发现 Init 方法是适合我的方法。我不相信 Global.asax 构造函数或 Application_Start 方法是要走的路。根据 MS 文档:

You should set only static data during application start. Do not set any instance data because it will be available only to the first instance of the HttpApplication class that is created.



我将其解释为:“不要在此处注册事件,因为在第一次请求后它将不可用。”

The Init method is called once for every instance of the HttpApplication class after all modules have been created.



我将其解释为:“在此处注册您的事件,因为它将为应用程序的每个新实例注册,并且不会删除处理程序”。

这里的关键是“在创建所有模块之后”。构造函数在此之前被调用,所以不会是正确的地方。至于Application_Start,我已经尝试了很多次,但我无法让事件注册保持不变——这已被文档证明。

所以我尝试将代码添加到 Init 方法中,它工作得很好
IE。
public void Init()
{
this.BeginRequest += attach your handler here;
this.EndRequest += attach your other handler here;
}

关于asp.net - 订阅 Application_BeginRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9989030/

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