虚拟主机域名注册-常见问题虚拟主机问题 → 虚拟主机问题


(asp.net)关于SessionState与序列化的一点教训
作者:
很简单的东西,因为在学习中遇到了,所以记录下来.

事情的起因是,我在做一个购物蓝时,将一个自定义的类CartManager整个放进Session中,它的部分代码如下,其实就是有一个Private的ArrayList成员_cart用来放CartInfo类实例,而CartInfo类又包括一个成员ProductInfo _product和一个double _moneny...并不复杂.但是我都没有弄任何Serializable的东西,于是...

本机调试没问题,放到服务器上却发现这个购物车表现非常怪异,时好时坏,总觉得好象Session里的东西乱得很,有时能存进去有时存不进?

比较了本机与服务器的环境,我知道问题肯定与SessionState有关.因为服务器用了Web Farm(并且将最大工作进程数设置成了10).

一般我们在做一个WEB Application的时候,它的SessionState的Mode=InProc的,可参见web.config文件中的配置

<sessionState
mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="20"
/>
在服务器上,因为存在多个工作进程,所以需要将它的写法改成 mode=StateServer了,否则就会造成前面所说的Session中的值不确定的现象.但是,如果简单地这样改一下,系统又报错说对于以StateServer 或者 SqlServer两种方式保存会话状态,要求对象是可序列化的(大意如此)...所以我们还需要再将对象做一下可序列化声明.

如果要保存的对象很简单,都是由基本类型组成的,就只需要声明一下属性即可,如:

[Serializable()]
public class ProductInfo {

private string f_SysID;


public string SysID {
get {
return this.f_SysID;
}
set {
this.f_SysID = value;
}
}

对于本例中,CartInfo 与 ProductInfo两个类,可以这样声明一下.只是CartManager就稍多几句话,如下:


[Serializable]
public class CartManager : ISerializable
{
private ArrayList _cart=new ArrayList();

public CartManager()
{
}

protected CartManager(SerializationInfo info, StreamingContext context)
{
this._cart=(ArrayList)info.Getvalue("_cart",typeof(ArrayList));
}

void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
{
info.Addvalue("_cart",this._cart);
}

private CartInfo findCartInfo(string sid)
{
foreach(CartInfo ci in this._cart)
{
if( ci.Product.SysID.Equals(sid) ) return ci;
}
return null;
}


public ArrayList getCart()
{
return this._cart;
}


这样实现了整个CartManager--CartInfo--ProductInfo的可序列化声明,于是就一切正常了...


文章出自:
http://www.cnblogs.com/sharetop/archive/2005/10/08/250286.html



来源:
阅读:149117
日期:2007-03-29

【 双击滚屏 】 【 推荐朋友 】 【 收藏 】 【 打印 】 【 关闭 】 【 字体: 】 
上一篇:常见术语介绍
下一篇:虚拟主机开启URLrewrite功能的方法介绍
  >> 相关文章
 
闂備浇顕ф鍝ョ不瀹ュ鍨傛繛宸簻閺勩儲绻涢幋鐐垫噣濞存粍绮撻弻娑㈡晜鐠囨彃绠虹紓浣瑰姈椤ㄥ牏妲愰幒妤佸亼闁告侗鍨抽敍鐔兼⒑鐠団€虫灈闁挎洩绠撳畷鐘诲冀椤撶喎娈ラ梺闈涚墕濞层倝鎮¢敓锟�闂傚倷鑳舵灙婵炲瓨宀稿畷婊冣枎韫囷絽娈梺鍛婂姦閸犳牕顔忓┑鍥︾箚妞ゆ牗绻冮妴鍐磼妲屾牗鐏咥缂傚倸鍊风欢锟犲垂闂堟稓鏆﹂柣銏ゆ涧閸ㄦ繈鏌ㄩ悤鍌涘闂傚倷绶氬ḿ鑽ゆ嫻閻旂厧绀夐幖娣妼閸氬綊骞栨潏鍓хɑ濠殿垰銈搁弻鏇$疀閵壯冨煂闂佸搫顑囨慨鎾箒濠电姍鍛㈤柛鐕佸灦楠炲棝鏁撻敓锟�婵犵數鍋涢悺銊у垝鎼淬劌纾块柕鍫濇濞呯娀鏌eΟ娆惧殭缂佺媭鍨辩换娑㈠箣閻愮數鐒肩紓渚囧櫙閹凤拷闂佽娴烽弫濠氬磻婵犲洤绐楅柡鍥╁枔閳瑰秴鈹戦悩鍙夋悙缂佲偓閸屾稏浜滈柟杈剧稻绾爼鏌ゅ宀婃綈妞ゃ劊鍎甸幃娆撳箵閹烘挻鐦i柣鐔哥矌婢ф岣垮▎鎿冩晪闁挎繂顦悞鍨亜閹烘垵顏╅柣顓燁殜閺屻劑鎮ら崒娑橆伓闂佽娴烽弫濠氬磻婵犲洤绐楅柡鍥╁枔閳瑰秴鈹戦悩鍙夋悙闁汇値鍣i弻銊╂偆閸屾稑顏�闂傚倷绀侀幖顐⒚洪妶澶嬪仱闁靛ň鏅涢拑鐔兼煥閻曞倹瀚�缂傚倸鍊搁崐鎼佸疮椤栫偛鍨傜憸鐗堝笚閸嬬喐銇勯弽顐粶缂佲偓閸℃稒鐓涢柛顐犲灪閺嗏晝绱掔€h埖瀚�缂傚倸鍊搁崐鎼佸疮椤栫偛鍨傜憸鐗堝笚閸嬬喐銇勯弽銊х煂闁活厽纰嶇换娑橆啅椤旇崵鍑归梺鎸庣〒閸犳牠寮婚敓鐘查唶婵犻潧鐔嗛姀鐘斀妞ゆ梹鍎抽弸娑氣偓瑙勬礃婵炲﹪寮幘缁樻櫢闁跨噦鎷�闂傚倷鑳剁涵鍫曞疾濠靛绐楅幖娣妼缁犳牠鏌¢崶鈺佷汗闁哄鐗犻弻鏇熺箾閸喖濮庨梺鍝勫€甸崑锟�闂佽娴烽弫濠氬磻婵犲洤绐楅柡鍥╁У椤洟鏌熼悜妯烩拻闁活厽鎹囬弻宥堫檪闁瑰嚖鎷�.闂傚倷绀侀幉锛勬崲閳ь剟鏌ょ€圭姴鐓愰柡鍛版硾閳规垿宕煎⿰鍕闂備浇娉曢崳锕傚箯閿燂拷闂傚倷绀侀幉鈥愁潖婵犳艾纾绘繛鎴欏灩閻鏌ㄩ悤鍌涘:0898-31568060婵犵數鍋為崹鍫曞箰婵犳艾绠板Δ锝呭暙閸氬綊鏌ㄩ悤鍌涘:13807590485