Csharp/C#教程:Response.redirect不保留HttpContext.Current.Items分享


Response.redirect不保留HttpContext.Current.Items

我正在学习HttpContext并发现了这一点

将为每个给ASP.Net应用程序的请求重新构造HttpContext对象

现在,考虑一个案例,当我有两页时。 WebForm1和Webform2。 在Form1中,我正在编写下面提到的代码并重定向到form2。

 HttpContext.Current.Items.Add("Key", "Value"); 

询问

当我使用Server.Transfer时,此密钥仍然存在,而使用Response.Redirect时并非如此

混乱

无论何时生成新请求,都会创建HttpCopntext对象。 此外,会话保持不变。 这是HttpContext的一部分。

 HttpContext.Current.Session 

如果Session可以持久化,为什么不能在Response.Redirect HttpContext.Current.Items

重定向生成一个新的HttpContext ,这就是它中的项丢失的原因 – 重定向有效地告诉浏览器下一个请求的URL,当它发生时,它会丢失触发重定向的先前请求的上下文。

会话持续存在于请求之间(通常使用sessionID cookie将用户绑定到服务器上的值),因此仍然可用。

我建议你在System.Web.dll上查看dotPeek ,特别是在getter HttpContext.Items["AspSession"]和方法SessionStateModule.InitStateStoreItem(...)中使用的属性HttpContext.Session (在getter中调用SessionStateModule.InitStateStoreItem(...) )wich调用SessionStateUtility.AddHttpSessionStateToContext(...) 。 你可以看到,HttpSessionState集合的内容存储在SessionStateStoreProviderBase实现的请求( InProcSql )对象之间,在一个单词中更深入。 而HttpContext.Items哈希表首先被初始化,并且在请求之间死亡。

上述就是C#学习教程:Response.redirect不保留HttpContext.Current.Items分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1022806.html

(0)
上一篇 2022年1月7日
下一篇 2022年1月7日

精彩推荐