技术开发 频道

ASP.NET内部原理(HttpHandler和HttpModule)

  ASP.NET系统中默认的HttpModule:

  DefaultAuthenticationModule 确保上下文中存在 Authentication 对象。无法继承此类。
 
  FileAuthorizationModule 验证远程用户是否具有访问所请求文件的 NT 权限。无法继承此类。
 
  FormsAuthenticationModule 启用 ASP.NET 应用程序以使用 Forms 身份验证。无法继承此类。

  PassportAuthenticationModule 提供环绕,PassportAuthentication 服务的包装。无法继承此类。

  SessionStateModule   为应用程序提供会话状态服务。

  UrlAuthorizationModule   提供基于 URL 的授权服务以允许或拒绝对指定资源的访问。无法继承此类。

  WindowsAuthenticationModule 启用 ASP.NET 应用程序以使用 Windows/IIS 身份验证。无法继承此类

  这些系统默认的HttpModule是在文件machine.config中配置的,和我们开发时使用到的web.config的关系是:是在ASP.NET FRAMEWORK启动处理一个Http Request的时候,它会依次加载machine.config和请求页面所在目录的web.config文件,如果在machine中配置了一个自己的HttpModule,你仍然可以在所在页面的web.config文件中remove掉这个映射关系。

public class HelloWorldModule : IHttpModule
{
    
public HelloWorldModule()
    {
    }

    
public String ModuleName
    {
        
get { return "HelloWorldModule"; }
    }

    
// In the Init function, register for HttpApplication
    
// events by adding your handlers.
    public void Init(HttpApplication application)
    {
        application.BeginRequest
+=
            (
new EventHandler(this.Application_BeginRequest));
        application.EndRequest
+=
            (
new EventHandler(this.Application_EndRequest));
    }

    
private void Application_BeginRequest(Object source,
         EventArgs e)
    {
    
// Create HttpApplication and HttpContext objects to access
    
// request and response properties.
        HttpApplication application = (HttpApplication)source;
        HttpContext context
= application.Context;
        context.Response.Write(
"<h1><font color=red> HelloWorldModule: Beginning of Request</font></h1><hr>");
    }

    
private void Application_EndRequest(Object source, EventArgs e)
    {
        HttpApplication application
= (HttpApplication)source;
        HttpContext context
= application.Context;
        context.Response.Write(
"<hr><h1><font color=red>HelloWorldModule: End of Request</font></h1>");
    }

    
public void Dispose()
    {
    }
}
    
<system.web>
<httpModules>
  
<add name="HelloWorldModule" type="HelloWorldModule"/>
</httpModules>
    
</system.web>

 

0
相关文章