回发后会话变量为空

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 有一个下划线。 做了一个解决方法,它就像一个魅力。