ASP.NET中實(shí)現(xiàn)HTTP請(qǐng)求
ASP.NET中實(shí)現(xiàn)HTTP請(qǐng)求
應(yīng)該指出的是,并不是所有的應(yīng)用程序集DLL都能實(shí)現(xiàn)HTTP請(qǐng)求/響應(yīng)模式。還是來(lái)看一下Microsoft Asp.Net快速入門教程中關(guān)于"Http 處理程序和工廠"的描述:
ASP.NET 提供低級(jí)別的請(qǐng)求/響應(yīng) API,使開發(fā)人員能夠使用 .NET 框架類為傳入的 HTTP請(qǐng)求提供服務(wù)。為此,開發(fā)人員需創(chuàng)作支持 System.Web.IHTTPHandler 接口和實(shí)現(xiàn) ProcessRequest()方法的類。當(dāng)處理 HTTP 請(qǐng)求不需要由高級(jí)別的 頁(yè)框架抽象化提供的服務(wù)時(shí),處理程序通常很有用。處理程序的常用用途包括篩選器和類似 CGI 的應(yīng)用程序,尤其是那些返回二進(jìn)制數(shù)據(jù)的應(yīng)用程序。
ASP.NET 收到的每個(gè)傳入 HTTP請(qǐng)求最終由實(shí)現(xiàn) IHTTPHandler 的類的特定實(shí)例來(lái)處理。IHttpHandlerFactory 提供了處理 IHttpHandler 實(shí)例 URL 請(qǐng)求的實(shí)際解析的結(jié)構(gòu)。除了 ASP.NET 提供的默認(rèn) IHttpHandlerFactory 類外, 開發(fā)人員還可以選擇創(chuàng)建和注冊(cè)工廠以支持大量的請(qǐng)求解析和激活方案。
從這段文字可以看出,當(dāng)aspx頁(yè)面不涉及。net框架提供的高級(jí)界面技術(shù)(如數(shù)據(jù)緩存、狀態(tài)保持、Web窗體控件引用等等)時(shí),且向客戶端輸出的不是復(fù)雜的HTML文本,特別是只向客戶端返回二進(jìn)制數(shù)據(jù)(如圖片,聲音等)時(shí),可以用一個(gè)。cs應(yīng)用程序文件(本文使用c#語(yǔ)言,如果是用VB或 JScript,……)來(lái)替代,而該應(yīng)用程序必須有一個(gè)實(shí)現(xiàn) System.Web.IHTTPHandler 接口和并實(shí)現(xiàn) ProcessRequest() 方法的類。一個(gè)簡(jiǎn)單的例子如下:
- public bool IsReusable
- {
- get { return true; }
- }
- public void ProcessRequest(HttpContext context)
- {
- HttpResponse res = context.Response;
- res.Write("<html><body>");
- res.Write("<h1>DllTest - Ex1(例1)</h1><hr>");
- res.Write("本頁(yè)面直接由DLL處理");
- 1 res.Write("</html></body>");
- }
在命令行狀態(tài),用如下的編譯命令把ex1.cs編譯成ex1.dll,并把它存放在bin目錄下。
csc /t:library /out:bin\ex1.dll ex1.cs
可以但要寫全路徑
csc /t:library /out:j:\WebSite\WebTest\bin\ex1.dll
J:\WebSite\WebTest\App_Code\ex1.cs
在配置文件web.config中添加aspx->dll映射,添加后,web.config應(yīng)該是這樣子的:
- <?xml version="1.0"?>
- <configuration>
- <system.web>
- <httpHandlers>
- <add verb="*" path="dlltest1.aspx" type="DllTest.ex1Page,ex1" />
- </httpHandlers>
- </system.web>
- </configuration>
現(xiàn)在當(dāng)瀏覽器訪問http://localhost/dlltest/dlltest1.aspx時(shí),實(shí)際上就是調(diào)用了ex1.dll中DllTest.Ex1Page類的ProcessRequest方法,在瀏覽中應(yīng)該可以看到一個(gè)簡(jiǎn)單的頁(yè)面。以上介紹ASP.NET中實(shí)現(xiàn)HTTP請(qǐng)求
【編輯推薦】