2013-03-09 63 views
1

簡單的問題,但幾個小時的搜索後,我還沒有找到一個簡單的答案。在多個服務器上運行的ASP.NET MVC 4網站中,是否有一種簡單的方法可以在全部會話中共享全局變量?ASP.NET表單中的全局變量

在單個服務器上,我只需創建一個靜態類,並在成員訪問器周圍包含適當的線程同步。但是,這顯然不會在服務器之間同步。

你會認爲,因爲保存每會話狀態非常簡單,並且它在服務器之間神奇地同步,所以你可以在應用程序狀態下做同樣的事情。但是我讀過的東西都說應用程序狀態是服務器本地的。

+3

將應用程序狀態變量保存到數據庫如何? – Tim 2013-03-09 02:15:44

回答

0

聽起來好像是時候將一些數據移動到一個持久性存儲(數據庫,文件系統)並且可選地添加一個緩存層(我們很高興AppFabric用戶)在性能上。

1

如果你指的會話狀態的存儲,你有3種選擇:

  • 進程內存儲(這聽起來像你使用的是什麼)
  • 會話狀態服務
  • 的Microsoft SQL Server

後者2提供您正在尋找的「共享全局變量」。請注意,會話狀態服務是單點故障。如果您的SQL配置是冗餘的,則SQL Server會話狀態存儲可能是冗餘的。

參見:

如果你想移動到本身不支持ASP.Net其他解決方案,你可以使用:

注意我沒有使用Memcached或Redis,但我聽說過很棒的東西。

0

答案是,您需要一個共同的數據庫,您可以在其中編寫和讀取您的公共變量。

通過平均公用數據庫,您甚至可以使用簡單的xml文件 - 但它必須是文件,服務器之間的公用共享文件,這是最簡單的方法。