在 Class 内放置断点实现 IHttpHandler

Placing a Breakpoint Inside Class Implementing IHttpHandler

我无法始终如一地使 VS 调试器在 class 实现 IHttpHandlerProcessRequest() 内的断点处停止。 它实际上停止了一次,然后再也没有这样做过...... 我正在使用 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;
        }
    }
}

网络表格:

<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>

加载图像没有问题:

如果您想在 ProcessRequest 方法上停止并且加载了断点但您没有命中它,则可能实际调用了另一个处理程序。

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

转到调试->新建断点->在函数处中断

在下面的 window 中键入方法的名称(或其中的一部分),确保选中使用 Intellisense 复选框并按确定

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

如果你只需要给同一个 class 的所有方法添加断点来知道调用了哪个,你可以使用一些可以为你做的 VS 扩展,例如这就是你可以使用 Oz 代码:

该问题只出现在 Microsoft Edge 上,IE 或 Firefox 不会出现。