此问题通常会出现在使用ASP.NET Web Form页面时。解决方案是将cookie记录在ViewState中。可以在Global.asax文件中添加以下代码:
protected void Application_BeginRequest(Object sender, EventArgs e)
{
if (Request.Cookies["ASP.NET_SessionId"] != null)
{
string id = Request.Cookies["ASP.NET_SessionId"].Value;
Session["ASP.NET_SessionId"] = id;
}
}
在提交请求时,将cookie添加到请求中。可以在Web.config文件中添加以下代码:
使用ViewState而不是Cookie来记录Session ID。可以在Page_Load事件中添加以下代码:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ViewState["ASP.NET_SessionId"] = Session.SessionID;
}
}
这些解决方法可以有效地解决Asp在回发时会丢失Session cookie的问题。