|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
一个很大的类库。应用程序之所以难以跨平台,在于直接调用了特定平台的接口,而一个巨大的类库,就能极大地减少应用程序对平台的依赖。<p>当哀求一个*.aspx文件的时分,这个哀求会被inetinfo.exe历程截获,它判别文件的后缀(aspx)以后,将这个哀求转交给ASPNET_ISAPI.dll,ASPNET_ISAPI.dll会经由过程http管道(HttpPipeLine)将哀求发送给ASPNET_WP.exe历程,在ASPNET_WP.exe历程中经由过程HttpRuntime来处置这个哀求,处置终了将了局前往客户端。
inetinfo.exe历程:是www服务的历程,IIS服务和ASPNET_ISAPI.DLL都存放在此历程中。
ASPNET_ISAPI.DLL:是处置。aspx文件的win32组件。实在IIS服务器是只能辨认。html文件的,当IIS服务器发明被哀求的文件是。aspx文件时,IIS服务器将其交给aspnet_isapi.dll来处置。
aspnet_wp.exe历程:ASP.NET框架历程,供应。net运转的托管情况,。net的CLR(大众言语运转时)就是存放在此历程中。
ASP.NETFramework处置一个HttpRequest的流程:
HttpRequest-->inetinfo.exe-->ASPNET_ISAPI.dll-->ASPNET_WP.exe-->HttpRuntime-->HttpApplicationFactory-->HttpApplication-->HttpModule-->HttpHandlerFactory-->HttpHandler-->HttpHandler.ProcessRequest()
ASP.NET哀求处置历程是基于管道模子的,这个管道模子是由多个HttpModule和HttpHandler构成,ASP.NET把http哀求顺次传送给管道中各个HttpModule,终极被HttpHandler处置,处置完成后,再次经由管道中的HTTP模块,把了局前往给客户端。我们能够在每一个HttpModule中都能够干涉哀求的处置历程。
注重:在http哀求的处置过程当中,只能挪用一个HttpHandler,但能够挪用多个HttpModule。
当哀求抵达HttpModule的时分,体系还没有对这个哀求真正处置,可是我们能够在这个哀求传送各处理中央(HttpHandler)之前附加一些别的信息,大概截获的这个哀求并作一些分外的事情,也大概停止哀求等。在HttpHandler处置完哀求以后,我们能够再在响应的HttpModule中把哀求处置的了局举行再次加工前往客户端。
HttpModule
HTTP模块是完成了System.Web.IhttpModule接口的类。
IHttpModule接口的声明:
<olclass="dp-xml">publicinterfaceIHttpModule{voidInit(HttpApplicationcontext);voidDispose();}
Init办法:体系初始化的时分主动挪用,这个办法同意HTTP模块向HttpApplication工具中的事务注册本人的事务处置程序。
Dispose办法:这个办法赐与HTTP模块在工具被渣滓搜集之前实行清算的时机。此办法一样平常无需编写代码。
HTTP模块能够向System.Web.HttpApplication工具注册上面一系列事务:
AcquireRequestState当ASP.NET运转时筹办好吸收以后HTTP哀求的对话形态的时分激发这个事务。
AuthenticateRequest当ASP.NET运转时筹办考证用户身份的时分激发这个事务。
AuthorizeRequest当ASP.NET运转时筹办受权用户会见资本的时分激发这个事务。
BeginRequest当ASP.NET运转时吸收到新的HTTP哀求的时分激发这个事务。
Disposed当ASP.NET完成HTTP哀求的处置历程时激发这个事务。
EndRequest把呼应内容发送到客户端之前激发这个事务。
Error在处置HTTP哀求的过程当中呈现未处置非常的时分激发这个事务。
PostRequestHandlerExecute在HTTP处置程序停止实行的时分激发这个事务。
PreRequestHandlerExecute在ASP.NET入手下手实行HTTP哀求的处置程序之前激发这个事务。在这个事务以后,ASP.NET把该哀求转发给得当的HTTP处置程序。
PreSendRequestContent在ASP.NET把呼应内容发送到客户端之前激发这个事务。这个事务同意我们在内容抵达客户端之前改动呼应内容。我们可使用这个事务给页面输入增加用于一切页面的内容。比方通用菜单、头信息或脚信息。
PreSendRequestHeaders在ASP.NET把HTTP呼应头信息发送给客户端之前激发这个事务。在头信息抵达客户端之前,这个事务同意我们改动它的内容。我们可使用这个事务在头信息中增加cookie和自界说数据。
ReleaseRequestState当ASP.NET停止所搜有的哀求处置程序实行的时分激发这个事务。
ResolveRequestCache我们激发这个事务来决意是不是可使用从输入缓冲前往的内容来停止哀求。这依附于Web使用程序的输入缓冲时如何设置的。
UpdateRequestCache当ASP.NET完成了以后的HTTP哀求的处置,而且输入内容已筹办好增加给输入缓冲的时分,激发这个事务。这依附于Web使用程序的输入缓冲是怎样设置的。
<p>因为二次编译器太复杂,那么建议只是在安装程序的时候编译一次,而不类似java那样运行就编译。并且我觉得,一次痛苦,总比多次低效率要舒服多了。 |
|