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