我有一个奇怪的问题,我有一个 HttpHandler ,其 ProcessRequest() 事件触发两次。
除了指向静态方法的指针之外,我在类中没有其他任何东西,所以我迷路了。
我做了一些谷歌搜索,但没有结果,尽管似乎有些人也遇到了类似的问题:
代码:
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext context)
{
Common.Tracker.TrackPageView(context);
}
废弃这个。
我一直在 Firefox 中进行测试,只有当我直接调用处理程序时才会发生这种情况。
如果我将处理程序设置为图像源,则不会发生这种情况。
此外,在 IE 中不会发生这种情况 - 仅限 Firefox。
我认为这可能是我的扩展(特别是 firebug 或 YSLOW),所以我手动将它们一一禁用,但它仍然发生,所以我不知道,但 firefox 对页面进行了两次调用。
也许它与这篇旧文章类似,因为我返回 GIF 作为内容类型: http://www.hanselman.com/blog/InternetExplorerAndTheMagicOfMicrosoftKBArticleQ293792.aspx
希望这对某人有帮助,因为那是我永远不会回来的几个小时......
您似乎正在尝试跟踪页面浏览量;客户端上的某些内容是否会导致页面/处理程序被调用两次?当发送到浏览器的 html 包含不带 src 属性的 img 标签时,我过去见过类似的行为。这只发生在 FireFox 中,但导致页面被调用两次。建议:查看是否有没有src标签的图片;使用 Fiddler 或 FireBug 检查 http 流量并确保您不会无意中调用处理程序两次。更多细节也会有帮助。希望这有帮助。
浏览器是否正在尝试获取网站图标?
我在我的项目中观察到相同的行为,并将其跟踪到具有空 src 值的 img 标签。我正在 Chrome 浏览器上进行测试,但不相信浏览器与我的情况有任何关系。
如果您使用隐身模式,它会触发一次。必须是扩展之一。