国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

解析Asp.Net頁面執行流程_.Net教程

2024-07-10 12:51:35
字體:
來源:轉載
供稿:網友

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

在我的上一篇文章中說到了HttpModule、HttpHandle的簡單使用,我們可以利用它們在頁面請求的過程中加入自己的事件處理程序。那么在一個aspx頁面請求時后臺到底做了什么?當然asp.net做了很多事情,過程也比較復雜,本文主要分析一下大體的流程。總體流程如下:

請求一個頁面時首先被WWW服務截獲(inetinfo.exe進程),這個進程首先判斷頁面的后綴,然后根據IIS中的配置來決定調用哪個擴展程序,比如aspx的頁面就會調用c:/windows/microsoft.net/framework/v2.0.50727/aspnet_isapi.dll,aspneface="Verdana">t_isapi.dll將請求發送給w3wp.exe進程(我們在調試IIS中網站時就是把VS2005附加到這個進程上的)。接下來w3wp.exe進程就會調用.net類庫進行具體處理:ISAPIRuntime-->HttpRuntime-->HttpApplicationFactory-->HttpApplication-->HttpModule--HttpHandlerFactory-->HttpHandler 這也是本文主要分析的地方。 下面只是列出主要流程,如果喜歡鉆研的同學可以用Reflector去查看一下:

以下為引用的內容:

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;

它的主要作用是調用一些非托管代碼生成HttpWorkerRequest對象,該對象包含當前請求的所有信息,然后傳遞給HttpRuntime,這里生成的HttpWorkerRequest對象可以直接在我們的頁面中調用的,通過它取得原始的請求信息:

以下為引用的內容:

IServiceProvider provider =

(IServiceProvider)HttpContext.Current;
HttpWorkerRequest wr =


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


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

以下為引用的內容:

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

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


this._handlerCompletionCallback, context);

1、根據HttpWorkerRequest對象生成HttpContext,HttpContext應該大家都很熟悉的,它包含request、response等屬性,在頁面中經常會用到的;

2、調用HttpApplicationFactory來生成IHttpHandler(這里生成的是一個默認的HttpApplication對象,HttpApplication也是IHttpHandler接口的一個實現)

3、調用HttpApplication對象執行請求

三:HttpApplicationFactory

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

分享:解析VC.NET擴展Windows磁盤清理工具的功能
摘 要 介紹了Windows磁盤清理工具二次開發的擴展接口,對其COM接口加以分解,并運用ATL庫具體實現了清理“*.tmp”臨時文件的功能。關鍵詞 磁盤清理工具、ATL庫、COM接口。

共3頁上一頁123下一頁
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 白银市| 通榆县| 铜陵市| 汝阳县| 凤山县| 务川| 重庆市| 怀仁县| 河曲县| 横山县| 余干县| 永春县| 永平县| 九龙县| 吉木萨尔县| 石阡县| 阿克苏市| 会东县| 巨野县| 绵竹市| 兴仁县| 达孜县| 大丰市| 宁海县| 如东县| 陈巴尔虎旗| 房产| 青龙| 广东省| 阿城市| 辽宁省| 嘉义县| 塔河县| 徐闻县| 彩票| 民丰县| 吴堡县| 双流县| 建湖县| 奉贤区| 铜鼓县|