问题描述
在经典的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
图片时,同样的事情再次发生。