ASP.Net HttpHandler ProcessRequest() 触发两次

问题描述 投票:0回答:5

我有一个奇怪的问题,我有一个 HttpHandler ,其 ProcessRequest() 事件触发两次。

除了指向静态方法的指针之外,我在类中没有其他任何东西,所以我迷路了。

我做了一些谷歌搜索,但没有结果,尽管似乎有些人也遇到了类似的问题:

代码:

    public bool IsReusable
    {
        get { return true; }
    }

    public void ProcessRequest(HttpContext context)
    {
        Common.Tracker.TrackPageView(context);
    }
asp.net httphandler ihttphandler
5个回答
10
投票

废弃这个。

我一直在 Firefox 中进行测试,只有当我直接调用处理程序时才会发生这种情况。

如果我将处理程序设置为图像源,则不会发生这种情况。

此外,在 IE 中不会发生这种情况 - 仅限 Firefox。

我认为这可能是我的扩展(特别是 firebug 或 YSLOW),所以我手动将它们一一禁用,但它仍然发生,所以我不知道,但 firefox 对页面进行了两次调用。

也许它与这篇旧文章类似,因为我返回 GIF 作为内容类型: http://www.hanselman.com/blog/InternetExplorerAndTheMagicOfMicrosoftKBArticleQ293792.aspx

希望这对某人有帮助,因为那是我永远不会回来的几个小时......


1
投票

您似乎正在尝试跟踪页面浏览量;客户端上的某些内容是否会导致页面/处理程序被调用两次?当发送到浏览器的 html 包含不带 src 属性的 img 标签时,我过去见过类似的行为。这只发生在 FireFox 中,但导致页面被调用两次。建议:查看是否有没有src标签的图片;使用 Fiddler 或 FireBug 检查 http 流量并确保您不会无意中调用处理程序两次。更多细节也会有帮助。希望这有帮助。


1
投票

浏览器是否正在尝试获取网站图标?


0
投票

我在我的项目中观察到相同的行为,并将其跟踪到具有空 src 值的 img 标签。我正在 Chrome 浏览器上进行测试,但不相信浏览器与我的情况有任何关系。


0
投票

如果您使用隐身模式,它会触发一次。必须是扩展之一。

© www.soinside.com 2019 - 2024. All rights reserved.