解決ASP與ASP.NET共存於一專案Session共用問題(StateStitch)

摘要:解決ASP與ASP.NET共存於一專案Session共用問題(StateStitch)

小喵最近要讓以前所撰寫的asp專案與ASP.NET專案並存,遇到的第一個問題就是Session不共用的問題。

這個問題微軟建議方案是透過SqlServer的方式來進行,不過這個解決方案卻有個問題,那就是如果本來的asp系統已經相當龐大,那麼要修改的東西就會非常的多。在ASP必須存放Session的時候把Session的東西往SQL丟,取Session的時候也要往SQL取。

於是小喵考慮使用第三方的付費程式來處理,那就是StateStitch

首先官方網站如下:
http://www.consonica.com/statestitch.aspx

使用StateStitech他提供個元件給asp的程式去呼叫,將Session存放於ASP.NET的State Service中,所以並存的ASP.NET必須使用Out Press Session的方式,把Session的存取透過State Service來處理。

使用上,ASP.NET的部份只需要修改Web.Config的部分即可。其他城市的部分不需任何的修改。ASP的部分則是需要修改Global.asa、並且在所有的asp中增加一個Include將他們提供的一個asp Include進來。這部分其實工程也蠻浩大的(對於一個比較大的asp系統),好在她提供一個精靈可以協助我們把這樣的工作輕鬆的在執行完精靈後就完成了工作。

使用限制

 那麼使用上是否有什麼特別的限制呢...小喵測試的結果,他還是有些狀況無法完全的處理,不過這個並不影響小喵的系統使用。
ASP:首先,他不允許asp將物件存放於Session中(例如Recordset)。不過在系統的設計時,把RecordSet放到Session這樣耗費系統資源、又讓SQL Connection持續連接的設計本來就應該避免。
ASP.NET:由於使用State Service的方式,因此如果在ASP.NET中,要把物件存放在Session,那麼物件就必須宣告成【可序列化】(例如:物件導向方式的購物車)。這個問題只需要把所有的物件都宣告成可序列化(<Serializable()>)即可解決


以下是簽名:


Microsoft MVP
Visual Studio and Development Technologies
(2005~2019/6) 
topcat
Blog:http://www.dotblogs.com.tw/topcat