2010-11-06 47 views
5

我寫了一個簡單的處理程序:ASP.NET處理程序未在IIS7上運行

public class ImageHandler : IHttpHandler, IRequiresSessionState 
{ 
    public bool IsReusable 
    { 
     get { return true; } 
    } 

    public void ProcessRequest(HttpContext context) 
    { 
     byte[] imgData = context.Session["Data"] as byte[]; 

     if (imgData != null) 
     { 
      context.Response.CacheControl = "no-cache"; 
      context.Response.Cache.SetCacheability(HttpCacheability.NoCache); 
      context.Response.ContentType = "image/png"; 

      context.Response.BinaryWrite(imgData); 
      context.Response.Flush(); 
     } 
    } 
} 

並設置web.config

 <system.web> 
    <httpHandlers> 
     <add verb="GET" path="image.png" type="TestWeb.Handlers.ImageHandler, TestWeb" /> 
    </httpHandlers> 
    </system.web> 

    <system.webServer> 
    <handlers> 
     <add name="Image" verb="GET" path="image.png" type="TestWeb.Handlers.ImageHandler, TestWeb" /> 
    </handlers> 
    </system.webServer> 
  • 如果我運行代碼允許VS啓動新的IIS服務並打開一個新選項卡它到達處理程序的斷點
  • 如果我設置don't open a page. Wait for request from an external application永遠不會到達處理程序

這不僅僅是斷點,當我運行在IIS上配置的網站時,處理程序中沒有代碼執行。只有從VS開始它纔有效。

only from VS

配置IIS7時我錯過了什麼?

回答

2

我不得不將應用程序池切換到Integrated模式,它使用的是經典的。

而我不得不從<system.web>刪除處理程序配置,因爲它給了我error 500.23

HTTP錯誤500.23 - 內部服務器錯誤 的ASP.NET設置已 檢測並不適用於 集成託管管道模式。

+3

如果您在下添加,則可以在兩個位置都有配置。 – curtisk 2011-02-23 18:30:32

0

你需要附加到asp.net工作進程。去工具/附加到進程並選擇w3p進程。

+0

這不僅僅是斷點。處理程序沒有執行代碼。我認爲問題不在VS上,我猜這是IIS7上的問題。 – BrunoLM 2010-11-07 14:15:39

相關問題