我有一个 MVC 应用程序部署到 Azure Web 应用程序。该 Web 应用程序需要在多个实例中横向扩展。 我想使用 Session 对象(ASP.NET)来存储一些用户数据等(轻量级),以便可以快速检索。我相信, session 将在 ARR ON 设置的过程中进行。
我有以下问题
可以在 Azure Web 应用程序中使用 session 对象吗? 如果 ARR 打开,保证使用相同的进程内 session 。
如果 ARR 关闭,我应该使用 session 对象吗?
由于使用 Session 本身会使应用程序变慢,所以有哪些 在 Azure webapp/MVC 中存储小数据的其他替代方案(经过身份验证的用户配置文件 相关数据)以便在应用程序中快速访问?
最佳答案
在云中使用IN-PROC session 是严格禁止的。托管到云的原因是为了拥有高可用性,这是通过分布式环境来实现的。
为了回答您的问题,ARR-Affinity cookie 会将客户端请求关联到特定实例。但是,如果进程重新启动
或App-Domain
回收,则所有 session 都将丢失。这是建议Out-Proc session 状态管理的主要原因之一。
我建议不要在任何云场景中使用进程内 session 状态。我知道速度是您关心的问题。为此,请考虑使用Redis 缓存。请参阅此处的文档:https://learn.microsoft.com/en-us/azure/redis-cache/cache-aspnet-session-state-provider
HTH
关于Azure Web 应用程序 session 和 ARR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45501652/