管道中的时间全部注册在HttpApplication里面,里面所有的HttpModule都会被执行,所以我们自己定义的Module只要继承了IHttpModulename就可以在里面定义init方法来控制管道中的事件了。我们可以在init方法里面注册管道中的事件。
怎么和管道结合:
请求--》Http.SYS分类处理--》aspnet_isapi.dll--》ISPAIRuntime--》HttpWorkRequest对象--》HttpRuntime-->创建出HttpContent(封装了请求报文)-->HttpApplication(通过HttpApplicationFactory工厂创建线程内唯一的HttpApplication对象,处理请求报文)--》
---MVC请求在这里不一样了---》在第7个事件中注册了事件存储了golab文件中的路由规则,和一系列方法,比较用户的路由和goulb里面的路由匹配,在创建路由规则的时候,创建了MVCRouteHandler方法。---》》创建了MVCHandler(),继承了IhttpHandler方法,也实现了里面的PR方法,在11,12事件的时候执行PR方法,找控制器,找视图,找代码执行。
在第8个事件的时候,会注册这个请求页面类的实例。需要在第8个事件之前注册事件才能有用。
时间: 2024-10-13 05:27:01