我对HttpModule和HttpHandler有一些疑问,请帮我澄清一下
1)在HttpModule中,我注意到初始化方法只调用了一次。调用每个请求的context_BeginRequest和context_EndRequest etc方法。是否保证对于一个模块,Init将为不同的用户(或不同的请求)调用一次,而BeginRequest等将每次为不同的用户(或不同的请求)调用?
2)由于可能存在多个应用程序对象,Application_Start(global.asax)是否有可能多次运行
3)由于应用程序对象可能不同(与应用程序池不同),在这种情况下,如何在不同用户之间共享应用程序数据?
4)在HttpHandler中,ProcessRequest方法将为每个请求(或为每个用户)调用。
谢谢Ritu
发布于 2010-07-25 04:33:16
“是否保证对于一个模块,初始化将为不同的用户(或不同的请求)调用一次,而BeginRequest等将每次为不同的用户(或不同的请求)调用?”
init方法将在应用程序池启动/应用程序第一次启动时调用。这是模块被加载的时候。
每次应用程序开始处理新的BeginRequest请求时,都会调用HTTP方法。
“2) Application_Start(global.asax)是否有可能多次运行,因为可能有多个应用程序对象”
特定文件夹中不存在多个应用程序。IIS不是这样工作的。每个应用程序只有一个global.asax,并且Application_Start只会为每个应用程序调用一次,除非重置应用程序池。
"3)由于应用程序对象可能不同(与应用程序池不同),在这种情况下,如何在不同用户之间共享应用程序数据?“
取决于您存储此应用程序数据的位置以及使用什么来检索它。我不知道你是什么意思。会话数据的作用域应该是单个应用程序(当然是进程内会话状态服务器,如果配置正确的话,也可以用于进程外会话状态服务器)
"4)在HttpHandler中,ProcessRequest方法将为每个请求(或为每个用户)调用。“
可以,但仅适用于映射到您的处理程序的请求。相反,可以为所有请求调用HttpModule。
https://stackoverflow.com/questions/3326748
复制相似问题