回发后会话变量为空
Session variable is null after postback
我有一个 ASP.NET v4.0 Web 应用程序在 x64 机器上的 IIS 7 上运行。
这个应用程序在本地开发机器上没有问题,在以前的 x86 服务器上也没有问题。
现在的问题是在回发之后所有会话变量都为空。例如。我有一个自动回发的下拉列表。几个小时以来,我一直在尝试解决这个问题,但没有任何运气。有人有什么想法吗?
SessionState 是 inProc,我没有在应用程序池上启用 webGarden。
我用下面的代码进行了测试。如果我在新服务器上运行程序,单击后输出显示为 null。但是如果我在本地运行它,它会按预期显示 -4
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="xyz.aspx.cs" Inherits="WebApplication1._default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript" src="jsFunctions.js" ></script>
<link rel="stylesheet" type="text/css" media="screen" href="css1.css"/>
<link rel="stylesheet" type="text/css" media="print" href="css1_print.css" />
</head>
<body class="daBody" onload="HideCalendar('divCalendar')">
<form id="form1" runat="server">
<asp:TextBox ID="output" runat="server" CssClass="output1"></asp:TextBox>
<asp:Button ID="b1" runat="server" OnClick="b1Click" BorderWidth="50px" />
</form>
</body>
</html>
namespace WebApplication1
{
public partial class _default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
MaintainScrollPositionOnPostBack = true;
if (!IsPostBack)
{
Session["test"] = -5;
output.Text = ""+(int)Session["test"];
}
}
protected void b1Click(object sender, EventArgs e)
{
if(Session["test"] == null)
output.Text = "null";
else
Session["test"] = ""+((int)Session["test"]+1);
}
}
}
感觉好像漏掉了一个配置步骤。
所以问题是在新服务器上,页面的 URL 有一个下划线。
做了一个解决方法,它就像一个魅力。
我有一个 ASP.NET v4.0 Web 应用程序在 x64 机器上的 IIS 7 上运行。 这个应用程序在本地开发机器上没有问题,在以前的 x86 服务器上也没有问题。
现在的问题是在回发之后所有会话变量都为空。例如。我有一个自动回发的下拉列表。几个小时以来,我一直在尝试解决这个问题,但没有任何运气。有人有什么想法吗?
SessionState 是 inProc,我没有在应用程序池上启用 webGarden。
我用下面的代码进行了测试。如果我在新服务器上运行程序,单击后输出显示为 null。但是如果我在本地运行它,它会按预期显示 -4
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="xyz.aspx.cs" Inherits="WebApplication1._default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/javascript" src="jsFunctions.js" ></script>
<link rel="stylesheet" type="text/css" media="screen" href="css1.css"/>
<link rel="stylesheet" type="text/css" media="print" href="css1_print.css" />
</head>
<body class="daBody" onload="HideCalendar('divCalendar')">
<form id="form1" runat="server">
<asp:TextBox ID="output" runat="server" CssClass="output1"></asp:TextBox>
<asp:Button ID="b1" runat="server" OnClick="b1Click" BorderWidth="50px" />
</form>
</body>
</html>
namespace WebApplication1
{
public partial class _default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
MaintainScrollPositionOnPostBack = true;
if (!IsPostBack)
{
Session["test"] = -5;
output.Text = ""+(int)Session["test"];
}
}
protected void b1Click(object sender, EventArgs e)
{
if(Session["test"] == null)
output.Text = "null";
else
Session["test"] = ""+((int)Session["test"]+1);
}
}
}
感觉好像漏掉了一个配置步骤。
所以问题是在新服务器上,页面的 URL 有一个下划线。 做了一个解决方法,它就像一个魅力。