【发布时间】:2016-09-03 20:48:09
【问题描述】:
我已经阅读了很多关于该主题的内容,但我没有得到解决方案。 我已经尝试了社区发布的所有解决方案,但没有成功。
我正在将一个站点从 IIS 6.0 迁移到 7.5。该站点同时具有 ASP 和 ASP.NET 应用程序,因此我设置了两个不同的池。 ASP.NET 应用程序可以正常工作。
我遇到的问题是 ASP 应用程序。所有 ASP 应用程序都使用另一个应用程序,其目标是授予用户权限。当授予用户应用程序创建一个session ("accepted") 变量并且在重定向时它会丢失时,问题就出现了。 此功能在 IIS 6.0 中有效
我已经跟踪问题并确认重定向时出现错误。
我已尝试并检查以解决问题:
-
会话属性
- 启用会话状态 = true
- 超时:00:20:00
- 模式设置:处理中
- Cookie 设置 = 使用 Cookie
- 使用托管身份表单模拟 = 选中
访问站点的端口::8685
- 我还检查了网络园艺,它没有启用,因为只有 1 个工作进程集。
我附上了我认为相关的屏幕截图
我编写了一个显示会话变量内容的 ASP 页面。在重定向之前,会话变量是正确创建的,但是当重定向发生时,信息会丢失。
我附上了我的企业政策允许我发布的代码:
response.write("Accepted: " & session("aceptado") & "<br>")
response.write ("SQL: " & mySQL & "<br>")
response.write("Accepted: " & session("aceptado") & "<br>")
dim i,j
j = Session.Contents.Count
Response.Write("Session contents: " & j & "<br>")
Response.Write("Contents: <br>" )
For Each i in Session.Contents
Response.Write(i & "<br>")
Next
Response.write("isNull: " & IsNull(Session) & "<br>")
Response.write("¿Aceptado? " & Session("aceptado"))
用上面的代码,结果是:
重定向发生后检查会话状态的代码是:
<%response.buffer = true
%>
<html>
<h1>test</h1>
<%
dim i,j
j = Session.Contents.Count
Response.Write("Session contents: " & j & "<br>")
Response.Write("Contents: <br>" )
For Each i in Session.Contents
Response.Write(i & "<br>")
Next
%>
isNull: <%=IsNull(Session)%> <br>
¿Aceptado?: <%=Session("aceptado")%><br>
incidencia : <%=Session("tipoincidencia")%><br>
usuario : <%=Session("usuario")%>
</html>
执行上述代码的结果:
重定向发生在最后两张图片之间
【问题讨论】:
-
Session State属性与经典 ASP 会话状态完全无关,它是 ASP.Net 特定的(这就是为什么在 IIS 7 及更高版本中它位于 ASP.Net 部分下)。看起来在 ASP 会话属性中New ID on Secure Connection设置为True,重定向切换协议 HTTP 到 HTTPS 可能吗?见Classic ASP session weirdness between HTTP and HTTPS。 -
没有 HTTP 到 HTTPS 切换协议发生。我尝试将“安全连接上的新 ID”更改为 False,但没有区别
-
欣赏您提供的所有屏幕截图,但没有任何代码(特别是调用重定向的位置)无法再提供任何帮助。
-
我刚刚更新了这个问题。由于我的企业政策,我无法发布所有代码。重定向是在
Response.write("¿Aceptado? " & Session("aceptado"))行执行之后。重定向到第二张图片(带有测试标题的那张) -
感谢您提供代码,这很有帮助,但
Response.Redirect是我们感兴趣的,它只显示前后。
标签: asp-classic iis-7.5 iis-6 session-variables session-cookies