同时使用AJAX和标准HTML POST请求的多个经典ASP SessionID的
问题描述:
我使用经典ASP和一点AJAX将表单的内容发回到AJAX窗体所在的页面。在AJAX POST页面中,将这些字段中的一个(电子邮件,具体)保存到Session变量中。用户然后开始他们的业务 - 也许通过普通的HTTP再次请求页面。同时使用AJAX和标准HTML POST请求的多个经典ASP SessionID的
然而,这留下我的浏览器(Firefox 3.0.6)有两个ASPSESSIONxxxx饼干 - 我认为一个AJAX请求,一个是标准的HTTP调用。
这将导致页面(这依赖于会话变量)从已创建的两个随机选择或者ASP会话ID - 一个与Session VAR组和一个没有。
我以前在PHP和Flash ASP处理这一点,你可以在PHP中设置会话ID,但不是。
是否有任何ASP特定的方式来抵消这种行为 - 或者我应该放弃并使用cookie?
答
我想这里可能还有别的东西。
我一起扔一个简单的例子,我认为是做你描述和会议似乎表现。
<%@ LANGUAGE=VBSCRIPT %>
<% if Request.Form("curid") = "" then %>
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js"></script>
<script type="text/javascript">
Event.observe(window, 'load', function() {
Event.observe($('sessiontest'), 'click', function(event) {
Event.stop(event);
new Ajax.Request('test.asp', {
method: 'POST',
parameters: {'curid': $('curid').value},
onSuccess: function(response) {
window.location = 'test.asp';
},
onFailure: function() {
alert('FAIL!');
}
});
});
});
</script>
</head>
<body>
<p><input type="text" id="curid" value="<%=Session("curid")%>" /></p>
<p><a href="#" id="sessiontest">Save ID to Session</a></p>
</body>
</html>
<%
else
Session("curid") = Request.Form("curid")
Response.write "I was called via POST"
end if
%>
我也是Windows w/FF 3.0.6。
答
奔,
我敢肯定,(虽然我还没有证实是肯定的),其双ASP会话分配超过1台虚拟主机在同一个工作进程(应用程序池)的结果服务器。你的环境中有这种情况吗?
我碰到这个页面迷迷糊糊的,我只是准备调试和部署一个传统的ASP Ajax实现,而这是一个问题,我想,即使这样做之前进行调查。
而且默认的ASP会话的行为在整个Windows服务器的后代(但不知道它是如何工作在IIS的XP/Vista的器具)的变化。
我的帖子有点过时了两个月,你是否解决了这个问题?并且好奇你正在测试/使用你的情况的服务器环境/ IIS。