视窗
loading...
  虚拟主机域名注册-常见问题虚拟主机问题 → 虚拟主机问题


(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



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

【 双击滚屏 】 【 推荐朋友 】 【 收藏 】 【 打印 】 【 关闭 】 【 字体: 】 
上一篇:常见术语介绍
下一篇:虚拟主机开启URLrewrite功能的方法介绍
  >> 相关文章
 
闂傚倷娴囬褎顨ラ崫銉т笉鐎广儱顦崹鍌涚箾瀹割喕绨婚柡鍕╁劜缁绘盯骞嬮悙鍨櫍婵炲瓨绮嶇划鎾诲蓟濞戙垺鏅滈悹鍥ㄥ絻缁犺櫣绱撴担鐟板妞ゃ劌鐗忓Σ鎰板箳濡や礁浜奸梺鍛婁緱閸ㄦ娊鏁嶉悢鍏尖拺閻犲洠鈧櫕鐏堥梺鎸庢穿缁犳挸鐣烽悩璇插唨妞ゆ挾鍠庡▓銉╂⒑闂堟稓澧曟繛灞傚€濋幃锟犳晸閿燂拷闂傚倸鍊烽懗鑸电仚濠电偛鐡ㄥ畝绋跨暦濠婂啠鏋庨煫鍥风到濞堫偊姊洪崨濠傚Е闁哥姵鐗曢蹇撯攽閸ワ妇绠氬銈嗙墬缁诲啴濡撮崘顏嗙<濡插本鐗楅悘鍜ョ紓鍌氬€搁崐椋庢閿熺姴鍨傞梻鍫熺〒閺嗭箓鏌i姀銈嗘锭闁搞劍绻堥弻銊╂偆閸屾稑顏�闂傚倸鍊风欢姘缚閼姐倖瀚婚柣鏃傚帶缁€澶愬箹濞n剙濡奸柛姘秺楠炴牗娼忛崜褏蓱婵犳鍨伴妶鎼佸蓟閺囷紕鐤€闁靛/鍐ㄧ厒闂備礁鎼鍥ㄦ叏閹绢喗绠掓繝鐢靛閸涱厜銏ゆ煕閻曚礁鐏︽鐐叉閺佹捇鏁撻敓锟�濠电姷鏁搁崑娑㈡偤閵娧冨灊閹兼番鍔岀壕鍧楁煏閸繃顥炴繛鍛█閺岋絽螣濞嗘儳娈紓浣哄閸ㄨ京鎹㈠☉銏犵闁绘劗鏁搁悞鑲╃磽娓氬洤娅欓柟鍑ゆ嫹闂備浇顕уù鐑藉极婵犳艾纾诲┑鐘叉搐缁愭鏌¢崶鈺佹灁闁崇懓绉撮埞鎴︽偐閸欏鎮欑紓浣插亾闁稿本绋忔禍婊堟煙鏉堝墽绋荤痪顓炵埣閺屻倕顫㈠畝濠冪秷濡炪們鍔婇崕鐢稿箖濞嗘挸绠甸柟鐑樻尰閻︼綁鏌i悢鍝ョ煂濠⒀勵殔宀e灝鈻庨幙鍐╂櫔闂佹寧绻傞ˇ顖炴倿閸偁浜滈柟鐑樺灥椤忊晠鏌i鐕佹疁闁哄被鍔戦幃銈夊磼濞戞﹩浼�闂備浇顕уù鐑藉极婵犳艾纾诲┑鐘叉搐缁愭鏌¢崶鈺佹灁闁崇懓绉撮埞鎴︽偐閸欏鎮欓梺姹囧€ら崳锝夊蓟閵娾晜鍋嗛柛灞剧☉椤忥拷闂傚倸鍊风粈渚€骞栭鈷氭椽濡舵径瀣槐闂侀潧艌閺呮盯鎷戦悢鍏肩叆闁绘洖鍊圭€氾拷缂傚倸鍊搁崐鎼佸磹閹间礁鐤い鏍仜閸ㄥ倻鎲搁悧鍫濈瑲闁稿鍠愰妵鍕冀椤愵澀绮剁紓浣插亾闁糕剝绋掗悡娑㈡煕椤愮姴鐏柡鍡忔櫇缁辨帞鈧綀鍩栫€氾拷缂傚倸鍊搁崐鎼佸磹閹间礁鐤い鏍仜閸ㄥ倻鎲搁悧鍫濈瑲闁稿鍠愰妵鍕冀閵娧呯厒闂佹椿鍘界喊宥囨崲濞戞﹩鍟呮い鏃囧吹閸戝綊姊洪幐搴c€掗柛鐘崇墵瀵鏁撻悩鏌ュ敹濠电娀娼ч悢鍡涘閻橆偅鏂€濡炪倖姊归崕鎶藉几濞戞埃鍋撶憴鍕濠电偛锕顐﹀箻缂佹ɑ娅㈤梺璺ㄥ櫐閹凤拷闂傚倸鍊烽懗鍓佹兜閸洖鐤炬繝闈涱儏缁愭骞栧ǎ顒€濡肩紒鐘崇墵閺岋繝宕堕埡浣锋睏闂佸搫顑嗛悧鐘诲蓟閺囩喓绠鹃柛顭戝枛婵酣姊洪崫鍕偓鐢稿磻閿燂拷闂備浇顕уù鐑藉极婵犳艾纾诲┑鐘叉搐缁愭鏌¢崶鈺佇fい顐f礋閺岀喖鎮滃Ο鐑╂嫽闂佹椿鍘介幑鍥蓟瀹ュ牜妾梺鐟板殩閹凤拷.闂傚倸鍊风粈渚€骞夐敍鍕床闁逞屽墴閺屻倗鈧湱濮撮悡鎰版煛閸涚増纭鹃柍瑙勫灴瀹曠厧饪伴崟顐㈩€忛梻鍌欐祰濞夋洟宕抽敃鍌氱闁跨噦鎷�闂傚倸鍊风粈渚€骞夐垾鎰佹綎濠电姵鑹剧壕缁樼箾閹存瑥鐏╅柣顓燁殜閺屻劑鎮ら崒娑橆伓:0898-31568060濠电姷鏁搁崑鐐哄垂閸洖绠板┑鐘宠壘缁犳澘螖閿濆懎鏆欓柛姘秺閺屻劑鎮ら崒娑橆伓:13807590485