【问题标题】:Azure web app session and ARRAzure Web 应用会话和 ARR
【发布时间】:2017-08-04 08:18:32
【问题描述】:

我有一个 MVC 应用程序部署到 Azure Web 应用程序。需要在多个实例中横向扩展的 Web 应用程序。 我想使用 Session 对象 (ASP.NET) 来存储一些用户数据等(轻量级),以便可以快速检索。我相信,会话将是带有 ARR ON 设置的 In-Proc。

我有以下问题

  1. 可以在 Azure Web 应用程序中使用会话对象吗? 如果 ARR 开启,保证使用相同的 In-Proc 会话。

  2. 如果 ARR 关闭,我应该使用会话对象吗?

  3. 由于使用 Session 本身会使应用程序变慢,有哪些 在 Azure webapp/MVC 中存储小数据的其他替代方法(一旦经过身份验证的用户配置文件 相关数据)以便在应用程序中快速访问?

【问题讨论】:

    标签: azure azure-web-app-service arr


    【解决方案1】:

    在云中使用 IN-PROC 会话是绝对不允许的。托管到云的原因是为了获得高可用性,这是通过分布式环境来实现的。

    为了回答您的问题,ARR-Affinity cookie 会将客户端请求关联到特定实例。但是,如果Process restartsApp-Domain 循环使用,则所有会话都将丢失。这是建议Out-Proc 会话状态管理的主要原因之一。

    我建议不要在任何云场景中使用 In-Proc 会话状态。我了解速度是您关心的问题。为此,请考虑使用 Redis 缓存。请参阅此处的文档:https://docs.microsoft.com/en-us/azure/redis-cache/cache-aspnet-session-state-provider

    HTH

    【讨论】:

    • 感谢 Kaushal,由于成本限制,无法使用 Redis 缓存。考虑 sql 或表存储
    • 这是个坏主意。如果您经常读取/写入会话数据,延迟将使应用程序崩溃。您不能真正用持久存储替换内存存储并摆脱它。此外,最小的 Redis 标准实例(不要使用 Basic,它只是主而不是主/从)并不那么昂贵,而且对于会话存储来说已经足够了。
    猜你喜欢
    • 2020-05-09
    • 2016-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-23
    • 2017-05-11
    • 2011-08-23
    • 1970-01-01
    相关资源
    最近更新 更多