在类中放置一个断点实现IHttpHandler

时间:2015-08-02 14:34:21

标签: c# asp.net entity-framework debugging httphandler

我不能始终使VS调试器在实现ProcessRequest的类的IHttpHandler()内的断点处停止。 它实际上停了一次然后又没有再做过...... 我正在使用Visual Studio 2013和Windows 10。

这是我的示例代码:

MyImageHandler:

public class MyImageHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        AwDAL.AwDAL dal = new AwDAL.AwDAL();

        int id = 100;
        byte[] buffer = dal.GetProductPhotoByID(id);

        context.Response.ContentType = "image/gif";
        context.Response.OutputStream.Write(buffer, 0, buffer.Length);
    }
    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}

web窗体:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Image runat="server" ImageUrl="~/MyImageHandler.ashx" />
    </div>
    </form>
</body>
</html>

它加载图像没有问题:

enter image description here

1 个答案:

答案 0 :(得分:1)

如果你想停止在ProcessRequest方法上并且断点被加载但你没有点击它,实际上可能会调用另一个处理程序。

有一种简单的方法可以在VS中为解决方案中的所有处理程序设置多个断点。

转到Debug-&gt; New Breakpoint-&gt; Break at function enter image description here

在以下窗口中键入方法的名称(或部分名称),确保选中Use Intellisense复选框并按OK

VS将使用相同的名称查找解决方案中的所有方法,并且可以使用“全部”按钮一次性将断点放在所有方法上。

enter image description here

如果您只需要为同一个类的所有方法添加断点以了解哪个方法被调用,您可以使用一些可以为您执行此操作的VS extencions,例如,这是您可以使用Oz代码执行的操作:

enter image description here