ASP.NET中實現(xiàn)HTTP請求
ASP.NET中實現(xiàn)HTTP請求
應(yīng)該指出的是,并不是所有的應(yīng)用程序集DLL都能實現(xiàn)HTTP請求/響應(yīng)模式。還是來看一下Microsoft Asp.Net快速入門教程中關(guān)于"Http 處理程序和工廠"的描述:
ASP.NET 提供低級別的請求/響應(yīng) API,使開發(fā)人員能夠使用 .NET 框架類為傳入的 HTTP請求提供服務(wù)。為此,開發(fā)人員需創(chuàng)作支持 System.Web.IHTTPHandler 接口和實現(xiàn) ProcessRequest()方法的類。當(dāng)處理 HTTP 請求不需要由高級別的 頁框架抽象化提供的服務(wù)時,處理程序通常很有用。處理程序的常用用途包括篩選器和類似 CGI 的應(yīng)用程序,尤其是那些返回二進制數(shù)據(jù)的應(yīng)用程序。
ASP.NET 收到的每個傳入 HTTP請求最終由實現(xiàn) IHTTPHandler 的類的特定實例來處理。IHttpHandlerFactory 提供了處理 IHttpHandler 實例 URL 請求的實際解析的結(jié)構(gòu)。除了 ASP.NET 提供的默認(rèn) IHttpHandlerFactory 類外, 開發(fā)人員還可以選擇創(chuàng)建和注冊工廠以支持大量的請求解析和激活方案。
從這段文字可以看出,當(dāng)aspx頁面不涉及。net框架提供的高級界面技術(shù)(如數(shù)據(jù)緩存、狀態(tài)保持、Web窗體控件引用等等)時,且向客戶端輸出的不是復(fù)雜的HTML文本,特別是只向客戶端返回二進制數(shù)據(jù)(如圖片,聲音等)時,可以用一個。cs應(yīng)用程序文件(本文使用c#語言,如果是用VB或 JScript,……)來替代,而該應(yīng)用程序必須有一個實現(xiàn) System.Web.IHTTPHandler 接口和并實現(xiàn) ProcessRequest() 方法的類。一個簡單的例子如下:
- 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("本頁面直接由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時,實際上就是調(diào)用了ex1.dll中DllTest.Ex1Page類的ProcessRequest方法,在瀏覽中應(yīng)該可以看到一個簡單的頁面。以上介紹ASP.NET中實現(xiàn)HTTP請求
【編輯推薦】















 
 
 
 
 
 
 