c# - Response.redirect 不保留 HttpContext.Current.Items

标签 c# asp.net webforms

我正在了解 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/

相关文章:

asp.net - IIS express 不提供 ES6 javascript 模块

asp.net - 在 IIS7.5 中不可见的无扩展名图像文件

asp.net - 这些<% ... %>是什么?以及在页面中可以通过哪些方式使用它们

c# - 在 DBcontext 中声明 DBSet<Type> - Entity Framework Code First

c# - 在 OOP 的传统意义上不相关的类的继承

asp.net - 输出特定的 HTTP header

ASP.Net WebForms + Paypal 表单

c# - Moq,Setup() 和 Returns() 之间的类型不匹配

c# - 如何将私有(private)成员行为定义为方法或属性? C#

asp.net - 自定义每个用户的 session 超时 - ASP.NET