日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

解析Asp.Net頁(yè)面執(zhí)行流程_.Net教程

編輯Tag賺U幣
教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!

推薦:如何用.NET讀取 Flash格式文件信息
一直以來(lái)存在這么一個(gè)問(wèn)題,就是當(dāng)用戶上傳的Flash文件時(shí)都需要附帶輸入Flash的寬和高,否則顯示的時(shí)候由于不知道這些數(shù)值而導(dǎo)致Flash比例不正常。 近日我做網(wǎng)站也涉及到了這方面的問(wèn)題

在我的上一篇文章中說(shuō)到了HttpModule、HttpHandle的簡(jiǎn)單使用,我們可以利用它們?cè)陧?yè)面請(qǐng)求的過(guò)程中加入自己的事件處理程序。那么在一個(gè)aspx頁(yè)面請(qǐng)求時(shí)后臺(tái)到底做了什么?當(dāng)然asp.net做了很多事情,過(guò)程也比較復(fù)雜,本文主要分析一下大體的流程�?傮w流程如下:

請(qǐng)求一個(gè)頁(yè)面時(shí)首先被WWW服務(wù)截獲(inetinfo.exe進(jìn)程),這個(gè)進(jìn)程首先判斷頁(yè)面的后綴,然后根據(jù)IIS中的配置來(lái)決定調(diào)用哪個(gè)擴(kuò)展程序,比如aspx的頁(yè)面就會(huì)調(diào)用c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll,aspneface="Verdana">t_isapi.dll將請(qǐng)求發(fā)送給w3wp.exe進(jìn)程(我們?cè)谡{(diào)試IIS中網(wǎng)站時(shí)就是把VS2005附加到這個(gè)進(jìn)程上的)。接下來(lái)w3wp.exe進(jìn)程就會(huì)調(diào)用.net類(lèi)庫(kù)進(jìn)行具體處理:ISAPIRuntime-->HttpRuntime-->HttpApplicationFactory-->HttpApplication-->HttpModule--HttpHandlerFactory-->HttpHandler 這也是本文主要分析的地方。 下面只是列出主要流程,如果喜歡鉆研的同學(xué)可以用Reflector去查看一下:

以下為引用的內(nèi)容:

ISAPIRuntime
bool useOOP = iWRType == 1;
wr = ISAPIWorkerRequest.CreateWorkerRequest(ecb, useOOP);
wr.Initialize();
string appPathTranslated = wr.GetAppPathTranslated();
string appDomainAppPathInternal =

HttpRuntime.AppDomainAppPathInternal;
if ((appDomainAppPathInternal == null) ||


StringUtil.EqualsIgnoreCase(appPathTranslated,

appDomainAppPathInternal))
{
HttpRuntime.ProcessRequestNoDemand(wr);
return 0;
}


HttpRuntime.ShutdownAppDomain(ApplicationShutdownReason.PhysicalApplica

tionPathChanged, SR.GetString("Hosting_Phys_Path_Changed", new object[]

{ appDomainAppPathInternal, appPathTranslated }));
return 1;

它的主要作用是調(diào)用一些非托管代碼生成HttpWorkerRequest對(duì)象,該對(duì)象包含當(dāng)前請(qǐng)求的所有信息,然后傳遞給HttpRuntime,這里生成的HttpWorkerRequest對(duì)象可以直接在我們的頁(yè)面中調(diào)用的,通過(guò)它取得原始的請(qǐng)求信息:

以下為引用的內(nèi)容:

IServiceProvider provider =

(IServiceProvider)HttpContext.Current;
HttpWorkerRequest wr =


(HttpWorkerRequest)provider.GetService(typeof(HttpWorkerRequest));


二:HttpRuntime
最主要的就是private void ProcessRequestInternal(HttpWorkerRequest wr)方法:

以下為引用的內(nèi)容:

context = new HttpContext(wr, false);
IHttpHandler applicationInstance =

HttpApplicationFactory.GetApplicationInstance(context);
IHttpAsyncHandler handler2 = (IHttpAsyncHandler) applicationInstance;
context.AsyncAppHandler = handler2;
handler2.BeginProcessRequest(context,


this._handlerCompletionCallback, context);

1、根據(jù)HttpWorkerRequest對(duì)象生成HttpContext,HttpContext應(yīng)該大家都很熟悉的,它包含request、response等屬性,在頁(yè)面中經(jīng)常會(huì)用到的;

2、調(diào)用HttpApplicationFactory來(lái)生成IHttpHandler(這里生成的是一個(gè)默認(rèn)的HttpApplication對(duì)象,HttpApplication也是IHttpHandler接口的一個(gè)實(shí)現(xiàn))

3、調(diào)用HttpApplication對(duì)象執(zhí)行請(qǐng)求

三:HttpApplicationFactory

原文地址:http://bbs.mb5u.com/Design/thread-1167995-1-1.html

分享:解析VC.NET擴(kuò)展Windows磁盤(pán)清理工具的功能
摘 要 介紹了Windows磁盤(pán)清理工具二次開(kāi)發(fā)的擴(kuò)展接口,對(duì)其COM接口加以分解,并運(yùn)用ATL庫(kù)具體實(shí)現(xiàn)了清理“*.tmp”臨時(shí)文件的功能。 關(guān)鍵詞 磁盤(pán)清理工具、ATL庫(kù)、COM接口。

共3頁(yè)上一頁(yè)123下一頁(yè)
來(lái)源:模板無(wú)憂//所屬分類(lèi):.Net教程/更新時(shí)間:2009-09-15
相關(guān).Net教程