国产欧美日韩第一页|日本一二三不卡视频|在线精品小视频,亚洲第一免费播放区,metcn人体亚洲一区,亚洲精品午夜视频

ISAPI的作用

2016-06-06 19:13:08 5036

ISAPI過(guò)濾器(篩選器):IIS本身是不支持動(dòng)態(tài)頁(yè)面的,也就是說(shuō)他僅僅支持靜態(tài)HTML頁(yè)面的內(nèi)容,對(duì)于.asp .aspx .cgi .php等,IIS并不知道如果處理這些后綴標(biāo)記,它就會(huì)把它當(dāng)作文本,絲毫不做處理發(fā)送到客戶(hù)端。為了解決這個(gè)問(wèn)題,IIS有一種機(jī)制,叫做ISAPI的過(guò)濾器。它是一個(gè)COM組件。舉個(gè)asp.net的例子:
ASP.NET服務(wù)在注冊(cè)到IIS的時(shí)候,會(huì)把每個(gè)擴(kuò)展可以處理的文件擴(kuò)展名注冊(cè)到IIS里面(如*.ascx *.aspx等)。擴(kuò)展啟動(dòng)后,就根據(jù)定義好的方式來(lái)處理IIS所不能處理的文件,然后把控制權(quán)跳轉(zhuǎn)到專(zhuān)門(mén)處理代碼的進(jìn)程中,asp.net中是aspnet_isapi.dll。讓這個(gè)進(jìn)程開(kāi)始處理代碼,生成標(biāo)準(zhǔn)的HTML代碼,生成后把這些代碼加入到原有的HTML中,最后把完整的HTML返回給IIS,IIS再把內(nèi)容發(fā)送到客戶(hù)端。

在以前的ASP時(shí)候,當(dāng)請(qǐng)求一個(gè)*.asp頁(yè)面文件的時(shí)候,這個(gè)HTTP請(qǐng)求首先會(huì)被一個(gè)名為inetinfo.exe進(jìn)程所截獲,這個(gè)進(jìn)程實(shí)際上就是www服務(wù)。截獲之后它會(huì)將這個(gè)請(qǐng)求轉(zhuǎn)交給asp.dll進(jìn)程,這個(gè)進(jìn)程就會(huì)解釋這個(gè)asp頁(yè)面,然后將解釋后的數(shù)據(jù)流返回給客戶(hù)端瀏覽器。其實(shí)ASP.DLL是一個(gè)依附在IIS的ISAPI文件,它負(fù)責(zé)了對(duì)諸如ASP文件,ASA等文件的解釋執(zhí)行

HTTP請(qǐng)求的處理(轉(zhuǎn)載加整理)

當(dāng)客戶(hù)端向web服務(wù)器請(qǐng)求一個(gè)*.aspx的頁(yè)面文件時(shí),同asp類(lèi)似,這個(gè)http請(qǐng)求也會(huì)被inetinfo.exe進(jìn)程截獲(www服務(wù)),它判斷文件后綴之后,把這個(gè)請(qǐng)求轉(zhuǎn)交給ASPNET_ISAPI.DLL而ASPNET_ISAPI.DLL則會(huì)通過(guò)一個(gè)Http PipeLine的管道,將這個(gè)http請(qǐng)求發(fā)送給ASPNET_WP.EXE進(jìn)程,當(dāng)這個(gè)HTTP請(qǐng)求進(jìn)入ASPNET_WP.EXE進(jìn)程之后,asp.net framework就會(huì)通過(guò)HttpRuntime來(lái)處理這個(gè)Http請(qǐng)求,處理完畢后將結(jié)果返回給客戶(hù)端。

當(dāng)一個(gè)http請(qǐng)求被送入到HttpRuntime之后,這個(gè)Http請(qǐng)求會(huì)繼續(xù)被送入到一個(gè)被稱(chēng)?為HttpApplication Factory的一個(gè)容器當(dāng)中,而這個(gè)容器會(huì)給出一個(gè)HttpApplication實(shí)例來(lái)處理傳遞進(jìn)來(lái)的http請(qǐng)求,而后這個(gè)Http請(qǐng)求會(huì)依次進(jìn)入到如下幾個(gè)容器中:
HttpModule --> HttpHandler Factory --> HttpHandler
當(dāng)系統(tǒng)內(nèi)部的HttpHandler的ProcessRequest方法處理完畢之后,整個(gè)Http Request就被處理完成了,客戶(hù)端也就得到相應(yīng)的東東了。

完整的http請(qǐng)求在asp.net framework中的處理流程:
HttpRequest-->inetinfo.exe->ASPNET_ISAPI.DLL-->Http Pipeline-->ASPNET_WP.EXE-->HttpRuntime-->HttpApplication Factory-->HttpApplication-->HttpModule-->HttpHandler Factory-->HttpHandler-->HttpHandler.ProcessRequest()
如果想在中途截獲一個(gè)httpRequest并做些自己的處理,就應(yīng)該在HttpRuntime運(yùn)行時(shí)內(nèi)部來(lái)做到這一點(diǎn),確切的說(shuō)是在HttpModule這個(gè)容器中做到這個(gè)的。


提交成功!非常感謝您的反饋,我們會(huì)繼續(xù)努力做到更好!

這條文檔是否有幫助解決問(wèn)題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問(wèn)題: