一本书显示了一个示例,其中(使用 IIS7 时)配置了以下模块,以便它可以被运行在网站上的任何 Web 应用程序(甚至非 asp.net 应用程序)使用。但:
如果为非 asp.net 应用程序调用此模块,那么如何或为什么仍会创建 HttpApplication 对象,因为非 asp.net 应用程序不在 CLR 的上下文中运行(因此 Asp.Net 运行时也不会)不跑)?
假设
HttpApplication
对象也是为非 asp.net 应用程序创建的,那么为什么 Init() 事件处理程序中的代码必须检查HttpApplication
对象是否实际存在?为什么它不存在?这不是HttpApplication
实际实例化 Http 模块实例的对象吗?
这是Http处理程序:
public class SimpleSqlLogging : IHttpModule
{
private HttpApplication _CurrentApplication;
public void Dispose()
{
_CurrentApplication = null;
}
public void Init(HttpApplication context)
{
// Attach to the incoming request event
_CurrentApplication = context;
if (context != null)
{
context.BeginRequest += new EventHandler(context_BeginRequest);
}
}
void context_BeginRequest(object sender, EventArgs e)
{ ... }
}