虛拟主機(jī)域名注冊-常見(jiàn)問(wèn)題虛拟主機(jī)問(wèn)題 → 虛拟主機(jī)問(wèn)題


(asp.net)關于SessionState與序÷←φ列化(huà)的(de)一(yī)點教訓
作(zuò)者:
很(hěn)簡單的(de)東(dōng)西(xī),因為(wèi)在學習(x✔←✔βí)中遇到(dào)了(le),所以記錄下✔σ (xià)來(lái).

事(shì)情的(de)起因是(shì),我在★σ做(zuò)一(yī)個(gè)購(gòu)物(wù)藍(lán)時(shí)↑∏,将一(yī)個(gè)自(zì)定義的(de)類CartManager整個(↑←≤gè)放(fàng)進Session中,它的(de)部分(fēn£₩)代碼如(rú)下(xià),其實就(jiù)是(sh•¥ì)有(yǒu)一(yī)個(gè)Private的( Ω®de)ArrayList成員(yuán)_cart用(→•↔σyòng)來(lái)放(fàng)CartInfo$ε類實例,而CartInfo類又(yòu)包括一(yī)≤≠ 個(gè)成員(yuán)ProductInfo _produc$$‍'t和(hé)一(yī)個(gè)double _mβ♥≈oneny...并不(bù)複雜(zá).但(dàn)是(shì€σ)我都(dōu)沒有(yǒu)弄任何Serializable的(de)東♥φε(dōng)西(xī),于是(shì)...

本機(jī)調試沒問(wèn)題,放(fàng)到(dào)服務器(qì)上(♣σ‌÷shàng)卻發現(xiàn)這(zhè)個(gè&σ)購(gòu)物(wù)車(chē)表現(xiàn)非常怪異,時(shí)♦γ≥®好(hǎo)時(shí)壞,總覺得(de)好(hǎo)象Session裡(l<©>ǐ)的(de)東(dōng)西(xī)亂得(de)很(hěn),有(yǒu)• 時(shí)能(néng)存進去(qù)有(yǒu≠♠α→)時(shí)存不(bù)進?

比較了(le)本機(jī)與服務器(qì)的(de)環境,我知(zh↓<ī)道(dào)問(wèn)題肯定與SessionSt♥→♥ate有(yǒu)關.因為(wèi)服務器(qì)用¶↑☆>(yòng)了(le)Web Farm(并且将最大(dà)工(ββgōng)作(zuò)進程數(shù)設置成了(le)↔☆"←10).

一(yī)般我們在做(zuò)一(yī)個(gè)WEB Appγπlication的(de)時(shí)候,它的(de)  SessionState的(de)Mode=InProc的(de),可(kě)©≈δ×參見(jiàn)web.config文(wén)件(jiàn)中®↕ 的(de)配置

<sessionState
mode="InProc"
stateConnectionString="t• cpip=127.0.0.1:42424"
sqlConnectionString="dat>‌∏±a source=127.0.0.1;Trusted_Conn♠✘¶♦ection=yes"
cookieless="false"
timeout="20"
/>
在服務器(qì)上(shàng),因為(wèi)存π♥‍在多(duō)個(gè)工(gōng)作(zuò)進程,所以需要(yà∑ ✔o)将它的(de)寫法改成 mode=StateServer了£π(le),否則就(jiù)會(huì)造成前面所說(shuō)§$♥的(de)Session中的(de)值不(bù)确定×≈'•的(de)現(xiàn)象.但(dàn)是(shì),如(rú≥♠αε)果簡單地(dì)這(zhè)樣改一(yī€♠)下(xià),系統又(yòu)報(bào)錯(cuò)說(sh α÷uō)對(duì)于以StateServer 或者 Sql'βΩServer兩種方式保存會(huì)話(huà)狀态§‌∞,要(yào)求對(duì)象是(shì)可(kě)序列化(huà)的(♥©de)(大(dà)意如(rú)此)...所以我們還(hái)需要(yào)再将♦γλα對(duì)象做(zuò)一(yī)下(x→≥©÷ià)可(kě)序列化(huà)聲明(mínΩ♣g).

如(rú)果要(yào)保存的(de)對(duì)象很(hěn)簡單,都(≤✘÷dōu)是(shì)由基本類型組成的(de),就(ji φ'≥ù)隻需要(yào)聲明(míng)一(yī)下Ω↕™(xià)屬性即可(kě),如(rú):®↓↑

[Serializable()]
public class Product∏Ω∞Info {

private string f_SysID;


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

對(duì)于本例中,CartInfo 與 Product≥♠Info兩個(gè)類,可(kě)以這(zhè)樣聲明(míng→ ↔)一(yī)下(xià).隻是(shì)CartMana©αδger就(jiù)稍多(duō)幾句話(huà),如±←™(rú)下(xià):


[Serializable]
public class CartManager : ISerializπ↑able
{
private ArrayList _cart=new ArrayList(★ );

public CartManager()
{
}

protected CartManager(Serial≤₹izationInfo info, StreamingContext c↓✔ "ontext)
{
this._cart=(ArrayList)info.Get↕≤value("_cart",typeof(ArrayList)★→"β);
}

void ISerializable.GetObje®δ ↔ctData(SerializationInfo ©✔≠★info, StreamingContext c€♣ontext)
{
info.Addvalue("_cart",this._cart);
}

private CartInfo findCartInfo(string ₹€¥sid)
{
foreach(CartInfo ci ₹ ¥in this._cart)
{
if( ci.Product.SysID.Equals(si&₩d) ) return ci;
}
return null;
}


public ArrayList getCar↑&∑t()
{
return this._cart;
}


這(zhè)樣實現(xiàn)了(le)整個(gè)CartManag←σer--CartInfo--ProductInfo的(de)可(k✘€¥ě)序列化(huà)聲明(míng),于是(shì)就(jiù)一(yī)切正≈©常了(le)...


文(wén)章(zhāng)出自(zì):
http://www.cnblogs.com/sharetop/arch±Ωive/2005/10/08/250286.html



來(lái)源:
閱讀(dú):5454
日(rì)期:2007-03-29

【 雙擊滾屏 】 【 推薦朋(péng)友(yǒu) 】 【 收藏 】 【 打印 】 【 關閉 】 【 字體(tǐ✘±):大(dà) 小(xiǎo) 】 
上(shàng)一(yī)篇:常見(jiàn)術(shù)語介紹
下(xià)一(yī)篇:虛拟主機(jī)開(kāi)啓URLrewδ ≈≥rite功能(néng)的(de)方法介紹
  >> 相(xiàng)™ ¥關文(wén)章(zhāng)