很簡單的小應用,通過httphandler,把字尾名是.php的請求交給指定的Httphandler處理即可。

首先要做的是在web.config配置好。

<httpHandlers>

      <add  verb=”*” path=”*.php” type=”FakePHP.JustFakeIt”/>

</httpHandlers>

httpHandlers結點是在system.web結點下的。

常規配置如上,verb指定是post還是get,path的作用類似於限制請求的路徑,比如上面,只要請求是php字尾名的,才能由此httpHandler處理。

type就是指定處理該請求的dll模組,或者型別。本例中就是FakePHP.JustFakeIt這個類,此類實現了IHttpHandler介面。該節點詳細說明參考

http://msdn.microsoft.com/en-us/library/aa903367(v=vs.71).aspx

剩下的事情,就是要實現這個處理請求,建立FakePHP.JustFakeIt這樣一個型別,然後編碼。

 

  1. using System.Web;  
  2. using System.IO;  
  3. using System.Net;  
  4.  
  5. namespace FakePHP  
  6. {  
  7.     /// <summary>  
  8.     /// JustFakeIt 的摘要說明  
  9.     /// </summary>  
  10.     public class JustFakeIt : IHttpHandler  
  11.     {  
  12.  
  13.         public void Proce***equest(HttpContext context)  
  14.         {  
  15.             context.Response.ContentType = "TEXT/HTML";  
  16.             string page = context.Request.Path;  
  17.  
  18.             WebRequest mywebReq;  
  19.             WebResponse mywebResp;  
  20.             StreamReader sr;  
  21.             string strHTML;  
  22.  
  23.             mywebReq = WebRequest.Create(HttpContext.Current.Request.Url.OriginalString.Replace(context.Request.Path, "/default.aspx"));  
  24.             mywebResp = mywebReq.GetResponse();  
  25.             sr = new StreamReader(mywebResp.GetResponseStream());  
  26.             strHTML = sr.ReadToEnd();  
  27.  
  28.             context.Response.Write(strHTML);  
  29.         }  
  30.  
  31.         public bool IsReusable  
  32.         {  
  33.             get 
  34.             {  
  35.                 return false;  
  36.             }  
  37.         }  
  38.     }  

 

然後執行,加上輸入url,請求為任意一個php檔案。比如a.php,http://localhost:26962/a.php

那麼就可以得到真實的default.aspx的內容了。

以上只是HttpHandler的一個小應用示例,通過這種方法,可以實現一些特殊需求。