我正在了解 HttpContext
并发现
HttpContext object will be constructed newly for every request given to an ASP.Net application
现在,考虑一个案例,我有两个页面。 WebForm1 和 Webform2。在 Form1 中,我正在编写下面提到的代码并重定向到 form2。
HttpContext.Current.Items.Add("Key", "Value");
查询
当我使用 Server.Transfer 时,这个 key 会持续存在,而使用 Response.Redirect 时则不是这种情况
困惑
每当生成新请求时,都会创建 HttpCopntext 对象。此外, session 被保留。这是 HttpContext 的一部分。
HttpContext.Current.Session
如果 Session 可以持久化,为什么 Response.Redirect
中的 HttpContext.Current.Items
不可以?
最佳答案
重定向生成一个新的 HttpContext
这就是其中的项目丢失的原因 - 重定向有效地告诉浏览器要请求的下一个 URL,当它这样做时它会丢失先前请求的上下文触发了重定向。
session 在请求之间持续存在(通常使用 sessionID cookie 将用户绑定(bind)到服务器上的值),因此仍然可用。
关于c# - Response.redirect 不保留 HttpContext.Current.Items,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16697601/