最近要作一个项目,让以前所写的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()>)即可解決。