2013-06-22 63 views
2

我想在我的asp.net項目中實現HTTPHandler。我跟着鏈接去做同樣的事情。我在我的根目錄下創建了一個名爲App_code的文件夾。他們寫了MyHTTPHandler類。 它有可重複使用的特性,也是我處理asp.Net中的HTTPHandler

public class HelloWorldHandler : IHttpHandler 
{ 
    public HelloWorldHandler() 
    { 
    } 

    public void ProcessRequest(HttpContext context) 
    { 

     context.Response.ContentType = "text/plain"; 

     if (context.Request.RawUrl.Contains(".cspx")) 
     { 
      string newUrl = context.Request.RawUrl.Replace(".cspx", ".aspx"); 
      context.Server.Transfer(newUrl); 
     } 

    } 

    public bool IsReusable 
    { 
     // To enable pooling, return true here. 
     // This keeps the handler in memory. 
     get { return false; } 
    } 
} 

的處理程序是沒有得到fiered過程。由於我是ASP.Net的新手,我無法弄清楚,出了什麼問題。我還輸入了web.config中所需的部分。我經歷了很多鏈接,有人說你需要在IIS中複製代碼。我無法理解它。 請指教

+0

如何註冊http處理程序:http://msdn.microsoft.com/en-us/library/46c5ddfy%28v=vs.100 %29.aspx – LukLed

+0

看來微軟使用Cassini服務器來運行開發項目。如果我讓我的代碼在IIS上運行,這將解決我的問題。從上面給出的鏈接我找到了這個步驟。打開Visual Studio或Visual Web Developer。 在文件菜單中,單擊新建網站。 在位置列表中,選擇HTTP,然後在文本框中輸入「http:// localhost/HttpHandler」。 單擊確定。 – sanchaita

+0

如果我在這方面得到任何幫助,我將不勝感激,因爲我很困難,無法弄清楚。 – sanchaita

回答

0

除非您想處理已經註冊的路徑,否則不需要在IIS中進行任何設置。在一般情況下,所有你需要做的就是將<httpHandlers>部分添加到web.config中:

<configuration> 
    ... 
    <system.web> 
    ... 
    <httpHandlers> 
     <add verb="*" 
      path="HelloWorldHandler.ashx" 
      type="NamespaceName.HelloWorldHandler, WebApplicationName" /> 
    </httpHandlers> 
    ... 
    </system.web> 
    ... 
</configuration> 

這裏HelloWorldHandler.ashx是,你需要用火處理程序的路徑,NamespaceName.HelloWorldHandler是處理類的全名,包括所有名稱空間,並且WebApplicationName是實現的程序集處理程序的名稱。

+0

我會嘗試這個 – sanchaita

+0

我也有另一個問題。如果我在HTTPModule而不是HTTPHandler中執行我的任務,會有什麼不同。這有什麼區別嗎?我也可以在HTTPModule中重寫我的URL。那麼爲什麼我們需要HTTPHandler。無論如何,reuest必須通過HTTPModule,然後才能通過HTTPHandler進行處理。我在理解這個概念時出錯了。 – sanchaita

+0

@sanchaita,你的理解是正確的,請求通過模塊(或幾個模塊)並在處理程序中處理。基本上,模塊可讓您訪問請求管道,並允許決定要執行的操作。處理程序本身就是行爲。像標記渲染(所有頁面都是處理程序btw)和文件下載應該由處理程序完成,而像授權這樣的操作是模塊的工作。 – Andrei