ASP.NET重定向期间,浏览器删除了Cookie的值是由于浏览器重定向请求时,会发送一个“Location”头。因为HTTP是无状态的,所以服务器在HTTP响应中将需要的状态信息存储在Cookie中,并在下一次发送到服务器时将其发送回来。当浏览器看到一个重定向请求时,它将删除所有Cookie。
解决方法是通过将要传递的数据存储在URL参数中而不是Cookie中。这可以通过将数据放在URL参数中来实现。在ASP.NET中,可以使用“Server.Transfer”方法,该方法将与当前请求关联的所有状态信息一起发送到新的位置。例如:
在发送重定向请求时将数据作为URL参数传递:
Response.Redirect("http://example.com/myPage.aspx?param1=value1¶m2=value2");
在新的位置,通过从“Request.QueryString”集合中读取参数值来检索数据:
string param1 = Request.QueryString["param1"]; string param2 = Request.QueryString["param2"];
另一种方法是使用“Session”对象来保留状态信息。在使用Session时,必须在发送响应之前调用“Session.Abandon”方法,以便服务器可以保存会话状态。例如:
在发送重定向请求之前,将数据存储在Session中:
Session["param1"] = "value1"; Session["param2"] = "value2";
在新的位置,从Session中读取数据:
string param1 = (string)Session["param1"]; string param2 = (string)Session["param2"];
在使用完Session之后,必须调用“Session.Abandon”方法以释放会话资源:
Session.Abandon();