2017-08-04 48 views
0

我有一個MVC應用程序部署到Azure Web應用程序。Web應用程序需要在多個實例中擴展。 我想使用會話對象(ASP.NET)來存儲一些用戶數據等(輕量級),以便可以快速檢索。我相信,會話將通過ARR ON設置進行In-Proc。Azure Web應用會話和ARR

我有以下問題

  1. 它是確定使用會話對象在Azure的網絡應用程序,它會給予 保證使用同一個進程內的會話,如果ARR上。

  2. 如果ARR關閉,我應該使用會話對象嗎?

  3. 因爲使用Session本身就是應用程序的速度,什麼是應用快速訪問 其他替代品來存儲小數據Azure的web應用程序/ MVC(一旦被認證的用戶配置文件 相關數據)內?

回答

3

使用IN-PROC雲中的會話是嚴格的no。託管雲的原因是具有高可用性這是通過具有分佈式環境完成的。

要回答你的問題,ARR-Affinity cookie將關聯客戶端請求到特定實例。但是,如果Process restartsApp-Domain回收,則所有會話都將丟失。這是建議使用Out-Proc會話狀態管理的主要原因之一。

我建議不要在任何雲場景中使用In-Proc會話狀態。我知道速度是你關心的問題。對於這個考慮使用Redis Cache。這裏請參考文檔:https://docs.microsoft.com/en-us/azure/redis-cache/cache-aspnet-session-state-provider

HTH

+0

感謝Kaushal,不能去因成本limitation.Considering SQL或表存儲 –

+4

這是一個糟糕的壞主意,Redis的緩存。如果您經常讀/寫會話數據,延遲會使應用程序癱瘓。你不能真正用耐用的商店來取代內存商店,並且擺脫它。此外,最小的Redis標準實例(不要與Basic一起使用,這是主控制器不是主控制器/從屬控制器)並不是那麼昂貴,而且會話存儲容量足夠多。 – evilSnobu