经典ASP页面每次请求加载两次

问题描述

在经典的ASP中,我有一个非常简单的脚本,使用 Jscript 作为脚本语言:

var counter_value = Session.Contents.Item("counter") || 0;

Response.Write("old:" + counter_value);

Session.Contents("counter") = counter_value + 1;

Response.Write("<br/>");

counter_value = Session.Contents.Item("counter");

Response.Write("new: " + counter_value);

当该脚本首次在浏览器中运行时,我得到以下输出

old: 0
new: 1

但是当我在浏览器中刷新页面时,得到了意外的结果:

old: 2
new: 3

为什么会这样?

解决方法

发现问题出在页面上,每个请求由于url-rewrite中的规则而被执行两次。

该规则指出,所有请求都应重写为index.asp,因此当浏览器发送请求时,index.asp的内容将在响应中返回。

当浏览器自动要求提供favicon.ico图片时,同样的事情再次发生。