一本书展示了一个示例,其中(当使用IIS7时)配置了以下模块,以便在网站上运行的任何Web应用程序(甚至通过nonasp.net应用程序)使用它。但是:
如果为nonasp.net应用程序调用此模块,那么仍然会创建HttpApplication对象的方式或原因,因为nonasp.net应用程序不在CLR的上下文中运行(因此也是Asp .Net运行时也不会运行)?
假设还为nonasp.net应用创建了HttpApplication
对象,那么为什么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)
{ ... }
}
答案 0 :(得分:3)
在IIS7中,使用集成管道运行的应用程序池中的应用程序始终是.NET应用程序。代码只是防守。
答案 1 :(得分:0)
关于HttpHander的链接:http://msdn.microsoft.com/en-us/magazine/cc188942.aspx