多语言展示
当前在线:1276今日阅读:75今日分享:44

.net&&IIS知识整理

Application_Start和Application_End方法在整个应用程序的生命周期中执行一次,如果想要Debug该方法,一定需要确保对当前项目的起始页面是第一次请求,因此最好重启下IIS,然后再访问default页面。
工具/原料
1

Asp.net

2

IIS

方法/步骤
1

当客户端向web服务器请求一个*.aspx的页面文件时,同asp类似,这个http请求也会被inetinfo.exe进程截获(www服务),它判断文件后缀之后,把这个请求转交给ASPNET_ISAPI.DLL而ASPNET_ISAPI.DLL则会通过一个Http PipeLine的管道,将这个http请求发送给ASPNET_WP.EXE进程,当这个HTTP请求进入ASPNET_WP.EXE进程之后,asp.net framework就会通过HttpRuntime来处理这个Http请求,处理完毕后将结果返回给客户端。

2

当一个http请求被送入到HttpRuntime之后,这个Http请求会继续被送入到一个被称之为HttpApplication Factory的一个容器当中,而这个容器会给出一个HttpApplication实例来处理传递进来的http请求,而后这个Http请求会依次进入到如下几个容器中: HttpModule --> HttpHandler Factory --> HttpHandler

3

当系统内部的HttpHandler的ProcessRequest方法处理完毕之后,整个Http Request就被处理完成了,客户端也就得到相应的东东了。

4

完整的http请求在asp.net framework中的处理流程: HttpRequest-->inetinfo.exe->ASPNET_ISAPI.DLL-->Http Pipeline-->ASPNET_WP.EXE-->HttpRuntime-->HttpApplication Factory-->HttpApplication-->HttpModule-->HttpHandler Factory-->HttpHandler-->HttpHandler.ProcessRequest()

5

在HttpModule中就是请求的过滤,Http是用于请求拦截的,真正处理请求是来自于HttpHandler。从HttpModule至HttpHandler也经历了一些事件:HttpModule | HttpModule.BeginRequest() | HttpModule.AuthenticateRequest() | HttpModule.AuthorizeRequest()| HttpModule.AcquireRequestState()|HttpModule.PreRequestHandlerExecute() | 进入HttpHandler处理HttpRequest | HttpHandler.ProcessRequest() | 返回到HttpModule接着处理(HttpHandler生命周期结束,Session失效) | HttpModule.PostRequestHandlerExecute() | HttpModule.ReleaseRequestState() | HttpModule.EndRequest() | HttpModule.PreSendRequestHeaders() | HttpModule.PreSendRequestContent() | 将处理后的数据返回客户端 | 整个Http Request处理结束

推荐信息