ASP.NET处理程序未在IIS7上运行

时间:2010-11-06 23:45:54

标签: asp.net iis-7 .net-4.0 module asp.net-4.0

我写了一个简单的处理程序:

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 个答案:

答案 0 :(得分:2)

我不得不将应用程序池切换到Integrated模式,它使用的是经典。

我必须从<system.web>删除处理程序配置,因为它给了我error 500.23

  

HTTP错误500.23 - 内部服务器   错误已设置ASP.NET设置   检测到不适用于   集成管理管道模式。

答案 1 :(得分:0)

您需要附加到asp.net工作进程。转到工具/附加进程并选择w3p进程。