2012-05-27 58 views
1

我正在開發一個MVC3項目和SQL Azure數據庫。當我部署超過1個實例時,我遇到了會話變量的一些問題。在Windows上有多個實例的會話變量Azure

爲了更加清楚,我將表格的結果存儲在會話變量中,並將結果傳遞給模型,用戶可以修改和操作數據,直到他點擊「保存」按鈕。

當用戶點擊「保存」時,我從模型中獲取新值並將它們傳遞給BLL和DAL層以更新數據庫。

我不知道這是否是正確的解決方案!但客戶端在每次數據更改時都不會訪問數據庫。

請幫忙。

回答

8

您遇到的問題是由於會話數據本地存儲在服務器上(這被稱爲ASP.NET的InProc)。當你使用多個實例時,這些數據不會在實例之間共享。爲了做到這一點,您有幾個選擇:

  • 將會話數據存儲在SQL Azure數據庫中。
  • 將會話數據存儲在Azure的表存儲中。
  • 將會話數據存儲在Azure的緩存服務中(可能是最快的,但也是最昂貴的)。

這裏有更多的一些信息:http://acloudyplace.com/2012/02/managing-session-state-in-windows-azure-what-are-the-options/

+0

謝謝!你的回答幫助我理解爲什麼當我部署多個實例時它不起作用。如果您有更好的想法來管理數據而不使用會話變量,我將會優雅 – GoodSpeed

+0

您可以查看ViewBag將數據從控制器傳遞到視圖和ViewData,以查看只需讀取一次的數據。如果這些都不能幫助你,會話數據就沒有問題。只要您將其存儲在SQL Azure/Table存儲中即可。 –

+0

官方建議的方法是使用AppFabric Cache作爲會話提供者 – Igorek