gpt4 book ai didi

asp.net - Azure Asp.Net Redirect 破坏 session 变量

转载 作者:行者123 更新时间:2023-12-02 23:51:15 29 4
gpt4 key购买 nike

我将“上次登录”存储在 session 变量中。执行“return Redirect(url)”后,该 session 变量将丢失。但是,当我执行另一个“重定向(url)”时,我恢复了 session !为什么?我不能让我的法语页面不显示上次登录。

步骤:

  1. 英文页面 -> 显示 session 变量
  2. 切换到法语:Redirect()
  3. 法语页面 -> 缺少 session 变量
  4. 切换到英语:Redirect()
  5. 英文页面 -> 显示 session 变量!!!

最佳答案

默认情况下, session 存储在服务器上的内存中。如果我不得不冒险猜测一下,您部署了多个 Azure 应用程序实例,但只有其中一个具有您的 session 状态。由于 Azure 的负载平衡是循环的,因此如果您有两个实例,您将在大约每个其他请求上看到您的状态。

因此,鉴于您上面的示例,我的评论添加了:

English page -> shows session variable   # Hits IN_0, has session state
Switch to French: Redirect() # Browser makes new request
French page -> missing session variable # Hits IN_1, does not have session state
Switch to English: Redirect() # Browser makes new request
English page -> shows session variable # Hits IN_0, has session state

如果您在 Azure 上托管站点并打算使用多个实例,则需要考虑到其中任何一个实例都可能收到您的用户请求的可能性。

至于解决方案,Azure 提供了一个 session 状态提供程序,它将把 session 写入共享缓存,而不是将其存储在内存中。看看 http://msdn.microsoft.com/en-us/library/windowsazure/gg185668.aspx有关如何设置的详细信息。

如果这不能满足您的需求,您可能需要考虑使用 Cookie 或持久存储来存储您的数据,而不是 session 。

关于asp.net - Azure Asp.Net Redirect 破坏 session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22561217/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com