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
实现的请求( InProc , Sql )对象之间,在一个单词中更深入。 而HttpContext.Items
哈希表首先被初始化,并且在请求之间死亡。
上述就是C#学习教程:Response.redirect不保留HttpContext.Current.Items分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1022806.html