2013-01-05 49 views
2

我試圖使用HTTP哈德勒,所以我創建了一個類lirary項目,並添加以下代碼:爲什麼我的HttpHandler不被解僱?

namespace MyProject.Handlers 
{ 
    public class Class1 : IHttpHandler 
    { 
     public bool IsReusable 
     { 
      get { return false; } 
     } 

     public void ProcessRequest(HttpContext context) 
     { 
      context.Response.Write("Hello from custom handler."); 
     } 
    } 
} 

然後我編譯它,它產生的MyProject.Handlers.dll文件。我把它放在我的asp.net bin文件夾,並已將此添加到asp.net

<system.webServer> 
    <handlers> 
     <add name="TutorialHandler" verb="*" path="*" type="MyProject.Handlers.Class1, MyProject.Handlers" modules="IsapiModule" scriptProcessor="c:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" resourceType="File" /> 
    </handlers> 
<modules runAllManagedModulesForAllRequests="true"> 
    //some stuff I *think* it doesn't make a difference 
</modules> 
//some stuff I *think* it doesn't make a difference 
</system.webServer> 

<system.web> 
<httpHandlers> 
     <add verb="*" path="*" type="MyProject.Handlers.Class1, MyProject.Handlers" /> 
    </httpHandlers> 
    </system.web> 

,但它只是不會被調用! 我開始調試器,設置斷點,但它不停止。如果我在firebug中檢查輸出html,則「來自自定義處理程序的Hello」這個句子不存在。

我在做什麼錯?

感謝, 奧斯卡

編輯:我使用框架4.0,IIS7。 難道是我使用路線嗎? (不是直接調用index.aspx,而是/ home或類似的東西?)

+0

一切看起來正確...你是否正在從正確的路徑加載頁面? – ic3b3rg

+0

嘗試將路徑更改爲「handler.ashx」並加載該特定頁面 – ic3b3rg

+0

您使用的是什麼版本的.NET框架? – nerdybeardo

回答

0

由於某些原因,它沒有在處理程序列表結束時被調用。我搬到頂端,並得到關於webresources.axd一個奇怪的錯誤。共振是路徑=「*」。 我找不到匹配的路徑,因爲我正在使用路由。

最後我發現我使用了錯誤的工具:模塊對我來說是正確的,而不是處理程序,因爲我想根據情況將其添加到輸出中。所以我改變了使用模塊的方法,現在看起來不錯。 感謝所有幫助我的評論!