【发布时间】:2016-01-21 10:19:24
【问题描述】:
我需要你的帮助。
我从哪里开始可以找出我的配置有什么问题?
在我的开发机器上,当我在 Visual Studio 2015 中使用“在浏览器中查看”时,我的代码会保留会话值。
但是,当我切换用户(我的 Windows 计算机上的另一个用户帐户)并使用 Visual Studio 查看同一页面时,会话值会在页面重定向中丢失。我还在朋友的开发机器上尝试了我的代码,会话值也丢失了。
这是由于 IIS Express 配置造成的吗? IIS Express 应用程序池是否内存不足并回收池 - 导致会话被重置?或者这可能是由于 64 位机器上的 IIS Express 版本 32 位/64 位造成的?
这是我测试此行为的示例代码:
SessionRedirect.aspx
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="SessionRedirect.aspx.vb" Inherits="Sandbox_SessionRedirect" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<p>
A: <% Response.Write(Session("A")) %>
</p>
<p>
B: <% Response.Write(Session("B")) %>
</p>
<asp:Button ID="Button1" runat="server" Text="Go" />
</div>
</form>
</body>
</html>
SessionRedirect.aspx.vb
Partial Class Sandbox_SessionRedirect
Inherits System.Web.UI.Page
Private Sub Sandbox_SessionRedirect_Load(sender As Object, e As EventArgs) Handles Me.Load
Session("A") = "A"
Session("B") = "B"
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Session("B") = "bounce"
Page.Response.Redirect("SessionRedirect2.aspx", False)
End Sub
End Class
SessionRedirect2.aspx
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="SessionRedirect2.aspx.vb" Inherits="Sandbox_SessionRedirect2" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<p>
A: <% Response.Write(Session("A")) %>
</p>
<p>
B: <% Response.Write(Session("B")) %>
</p>
</div>
</form>
</body>
</html>
Response.Redirect 后SessionRedirect2.aspx的结果:
答:
乙:
我打开了跟踪,但仍然注意到重定向到第二页时会话值丢失。
<%@ Page Trace="true" %>
任何帮助将不胜感激。 谢谢。
【问题讨论】:
-
我在 Microsoft TechNet 上挖掘并找到了一些有关 IIS 的信息,但没有找到 IIS Express:工作进程回收丢弃应用程序会话状态 - technet.microsoft.com/en-us/library/cc781036(WS.10).aspx
标签: asp.net vb.net session visual-studio-2015 iis-express