在.net中aspx改成其它的尾碼名

來源:互聯網
上載者:User

下。

傳說中的方法一:(源於http://topic.csdn.net/t/20050203/10/3772606.html)

47 樓Truly()回複於 2005-02-03 20:19:58 得分 15

1.iis預設網站-主目錄-設定-添加-  
   
  Executable:   C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\aspnet_isapi.dll  
  Extension:.mspx  
   
  確定  
   
  2.web.config  
      <system.web>  
  <httpHandlers>  
      <add   verb="*"   path="*.mspx"   type="System.Web.UI.PageHandlerFactory"/>  
  </httpHandlers>

傳說中的方法二:HttpHandler HttpModule 做出屬於自己的尾碼的網頁 !

 首先談談ASP.net的一些參數傳遞和頁面定向的方式
      第一,ASP.net是用Page.Navigate()調用新頁面的URL。Page.Navigate()向瀏覽器返回了一個http狀態代碼302,使得瀏覽器向server請求那個新的URL。這種導航方法導致每次客戶請求都需兩次在client和server之間往返。
      第二,任何要傳遞到新頁面的資訊都需作為URL的參數或儲存在Session中或儲存在資料庫中以便新頁面得到這些資訊。傳統的ASP開發人員很習慣這種做法,但其他的web編程人員則有一些更進階的方法。但是很明顯的這兩個頁面是有依賴性的,而依賴性是編譯器捕捉不到的也是不容易在設計階段建模的。所以在debug時,參數是否被正確的傳遞就只有我們自己檢查了。再有傳統的資料傳遞方式有可能會暴露一些關鍵的資料。更為關鍵的是這使得物件導向的設計變得很複雜。

      但是我們可以自訂httphandler來擴充這種支援。
       要對HTTPMODULE和IHTTPHANDLER進行研究,必須先對ASP.NET的處理管道有一個瞭解。 
    在ASP.NET應用程式中,系統使用一組相關的類,通過一定的順序來處理用戶端的請求(REQUEST),ASP.NET應用程式的處理模式可稱之為HTTP處理管道。      
    HTTPMODULE和IHTTPHANDLER就是這個處理管道上的兩個處理環節。 HTTP處理管道中的類在SYSTEM.WEB名稱空間中定義,主要有以下類型: HTTPWORKERREQUEST 抽象類別定義了ASP.NET頁面處理請求的基本方法; 
   HTTPRutime 提供了處理應用的一組服務; 
   HTTPContext 儲存了處理一次請求的所有相關上下文資訊; 
   HTTPApplicationFactory 提供相關目錄的應用程式; 
   HTTPApplication 定義了所有ASP.NET應用程式的通用的方法、屬性和事件。這個類也是在使用者在GLOBAL.ASAX檔案中定義的應用的基類; 
   Modules 處理請求前和響應後的事件; 
   Handlerfactories 提供應用程式中的HANDLERS; 
   Handlers 處理請求和響應。 

   在WINDOWS平台上,HTTP PIPLINE需要IIS的支援。為了運行ASP.NET應用,IIS需要以下兩個檔案:ASPNET_ISAPI.DLL和ASPNET_WP.EXE ASPNET_ISAPI.DLL是一個ISAPI EXTENTION他將發向IIS的請轉交ASPNET_WP.EXE處理 ASPNET_WP.EXE使用HTTPRUNTIME對請求進行具體處理 處理的過程可以用圖表示如下:

     

下面一個簡單的例子來理解! 1). 建立一個名為SimpleHandler的工程,添加一個類MyHandler.cs,代碼如下:

namespace SimpleHandler
{
    public class MyHandler : IHttpHandler
    {
        public void ProcessRequest(HttpContext ctx)
        {
            HttpResponse response = ctx.Response;
            
           response.Write(" My first Handler !");
        }
        public bool IsReusable
        {
            get { return true; }
        }
    }
}

 2). 將上面的代碼編譯,產生SimpleHandler.DLL 檔案;

 3). 建立一個新的Web項目,將檔案SimpleHandler.dll 添加到項目的引用中;
 4). 修改Web.config ,添加如下內容: 
   <system.web>
      <httpHandlers>
        <add verb="*" path="*.ASPX" type="SimpleHandler.MyHandler,SimpleHandler" />       
      </httpHandlers>
    </system.web>
   設定檔中的選項說明: 
   VERB可以是"GET"或"POST",表示對GET或POST的請求進行處理。
   "*"表示對所有請求進行處理。 
   PATH指明對相應的檔案進行處理,"*.ASPX"表示對發給所有ASPX頁面的請求進行處理。可以指明路徑,如"/TEST/*.ASPX",表明只對TEST目錄下的ASPX檔案進行處理。 
   TYPE屬性中,逗號前的字串指明HTTPHANDLER的實作類別的類名,後面的字串指明DLL檔案的名稱。 
   現在,請求項目中的任何ASPX頁面,頁面上顯示的始終只有如下一行字: My first Handler !

因為,我們自訂的HANDLER截獲了所有發向ASPX頁面的請求,並且用自己的的方法來處理這些請求了。

為了使我們的字定義頁面 如: *.AAA 能夠順利運行,我們需要修改WEB.CONFIG檔案: 
 
     <system.web>
            <httpHandlers>
                 <add verb="*" path="*.AAA" type="SimpleHandler.MyHandler,SimpleHandler" />        
            </httpHandlers>
    </system.web>
為了讓對尾碼名為.AAA 的檔案的請求能夠被我們的HANDLER截獲運行,我們還需要一些額外的工作。開啟IIS的管理主控台,又鍵單擊網站,選擇"屬性",跳出網站的屬性對話方塊。選擇主目錄選項,選擇配置,彈出應用程式配置對話方塊,將".AAA"添加到應用程式對應中 . 好了,我們現在可以在項目中添加一個.AAA 檔案,當向該檔案發送請求時,瀏覽器顯示:  My first Handler !   而對其他ASPX檔案的訪問不受影響。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.