看起来这样有效:
Session.Abandon();
Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
通过清除该 cookie,将在服务器上创建具有新会话 ID 的新会话。
(参考:微软支持 http://support.microsoft.com/kb/899918)
编辑:这是一个使用 AJAX(使用 jQuery)调用服务器代码而无需刷新页面的示例 - 它调用两次,一次用于删除第一个会话,一次用于生成新会话。可能有更好的方法,但这确实有效。
function newSession() {
jQuery.ajax({
type: "POST",
url: "WebForm1.aspx/ClearSession",
data: "{}",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function () {
jQuery.ajax({
type: "POST",
url: "WebForm1.aspx/NewSession",
data: "{}",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function () { console.log("Success!"); },
error: function (x, y, z) {
console.log("Failure!");
}
});
},
error: function (x, y, z) {
console.log("Failure!");
}
});
}
在代码隐藏上(对于 WebForms - 您也可以使用 MVC 控制器来执行此操作):
[WebMethod]
public static void ClearSession()
{
HttpContext.Current.Session.Abandon();
HttpContext.Current.Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
}
[WebMethod]
public static void NewSession()
{
HttpContext.Current.Session["x"] = 123;
}