2012-03-15 60 views
1

我正在爲ASP.NET MVC應用程序實現自定義會話狀態提供程序。我的要求是我必須將會話數據作爲xml存儲在Sql服務器的自定義表中。在ASP.NET MVC中實現自定義會話狀態提供程序

我可以使用現有的SQL 會話狀態提供(覆蓋一些方法),要麼我已經實現抽象類SessionStateStoreProviderBase從頭開始創建?

回答

-1

爲什麼你不只是使用SQL服務器作爲你的狀態提供者?你可以在配置中設置它,並且這是自動發生的,那麼SQL服務器會將數據存儲爲序列化的二進制數據並有效地檢索它?

簡短的回答是肯定的,你可以,但它正在重新發明車輪。你是否需要將這些數據用於其他任何事情,或者將它自己編輯出來嗎?我傾向於使用一個單獨的過程。你將爲自己創建一些工作,如果你需要稍後再看,你最好將它保存在sessiopn中。

讓你的XML文檔會話對象

Session["MyCustomXml"] = mydoc; 

var mydoc = Session["MyCustomXml"] as XmlDocument; 

然後用下面的配置,所以它存儲在SQL Server。

<sessionState 
      mode="SQLServer" 
      sqlConnectionString="data source=127.0.0.1;user id=<username>;password=<strongpassword>" 
      cookieless="false" 
      timeout="20" 
    /> 

如果您需要在以後的樣子,只是它的SessionID保存到磁盤somwhere安全作爲文件名,以保持它的獨特。

+0

你不需要使用會話狀態,你可以做到無狀態。沒有必要使用沉重的會話狀態提供程序。 – PositiveGuy 2012-05-24 05:16:51

+0

sql服務器會話狀態提供程序不會比通過安全會話Id存儲會話更重要,這是個問題。 – Gats 2012-05-25 01:25:58

3

是的,你可以自定義你的類提供程序會話,即使使用sql server或oracle。從繼承自SessionStateStoreProviderBase的模型中的類繼承並實現所發送的必需方法,請檢查所需方法列表here

如果您想使用示例,請參見here。 本示例使用odbc,但只是將訪問類替換爲OdbcConnection與SqlConnection,反之亦然。

祝你好運。

相關問題