程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> Asp.Net Mvc: TempData續 - 禁用SessionState之後

Asp.Net Mvc: TempData續 - 禁用SessionState之後

編輯:關於ASP.NET

環境:

Windows 2008, VS 2008 SP1, Asp.Net Mvc 1.0

一. 在Asp.Net Mvc應用程序中禁用SessionState

在Asp.Net Mvc: 淺析TempData機制一文中,我們簡單探討了Asp.Net Mvc中TempData的實現機制,由 此得知默認情況下,TempData的DataProvider實現為基於Session的存儲方式。

采用Session作為默認的數據存儲方式,原本合情合理,只是,有時候,我們的網站中卻不允許使用 Session,需要禁用這家伙,如果這時候你只是簡單的在Web.config中加上SessionState的禁用配置,就 OK了嗎?當然不是!

來看看情況吧:

給Web.config加上<sessionState mode="Off" />,然後運行程序,頁面上馬上會報告一個異常 :

原因很簡單,根據前文分析,無論如何,每次Action執行的時候都會Load和Save TempData,而此時如 果我們禁用了Session,那麼就必然出現上述異常。

那現在怎麼辦呢?其實,我甚至都不想在我的應用程序中使用TempData,我只是想禁用SessionState ,然道,我要為此去實現另外一套TempDataProvider嗎?代價是不是太高了?剛才說了,其實我壓根兒都 不想使用TempData,那麼我為何不干脆實現一個啥事也不干的TempDataProvider得了。

二. 自定義一個NullTempDataProvider

嗯,現在就來寫一個啥事也不干的TempDataProvider:

正如你看到的,NullTempDataProvider確實啥也沒干,就是說,你寫了貌似TempData["name"] = "Tristan"之類的語句等於白寫,但前面說了,我不用TempData,所以,是可以接受的。

好了,替代品寫好了,現在就要考慮怎麼替代掉那個默認的SessionTempDataProvider了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved