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


(asp.net)關于SessionState與序列化(huà)的(d&Ωe)一(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)Arra€δyList成員(yuán)_cart用(yòng)來(lái)放(f§<àng)CartInfo類實例,而CartInfo &‌類又(yòu)包括一(yī)個(gè)成員(yuán)ProductI<≥∑™nfo _product和(hé)一(yī)個(gè)doubl ±e _moneny...并不(bù)複雜(zá).但(dàn)是(shì)→✘♠我都(dōu)沒有(yǒu)弄任何SerialΩ&★izable的(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)題肯定與SessionS ≤σtate有(yǒu)關.因為(wèi)服務器(qì)用(yòngσ÷₽α)了(le)Web Farm(并且将最大(dà)工(g≠$ōng)作(zuò)進程數(shù)設置成了(le)10).ε"'∑

一(yī)般我們在做(zuò)一(yī)個(gè)WEB Ap>‍plication的(de)時(shí)候,它的(de)SessionSta→®∞te的(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="daλ₩♥ta source=127.0.0.1;Trusted_Connection¥→=yes"
cookieless="false"
timeout="20"
/>
在服務器(qì)上(shàng),因為(wèi)存在多(duō)個(gè)工 α(gōng)作(zuò)進程,所以需要(yào)将它的(de)寫法改成 moΩ≈∞de=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ò)說(shuō)對(duì)于以"δ ↑StateServer 或者 SqlServer兩種方式α↑保存會(huì)話(huà)狀态,要(yào)求對(duì)©♠γ象是(shì)可(kě)序列化(huà)的(↕ $₽de)(大(dà)意如(rú)此)...所以我們還(hái)需要(yào)再将δ€對(duì)象做(zuò)一(yī)下(xià)可(kě)序列化(huà)聲明±∏>☆(míng).

如(rú)果要(yào)保存的(de)對(duì)象很(hěn)簡單,都≤"$↔(dōu)是(shì)由基本類型組成的(de),就(₩γjiù)隻需要(yào)聲明(míng)¥"±✘一(yī)下(xià)屬性即可(kě),Ωγ β如(rú):

[Serializable()]
public class ProductInfo {

private string f_SysID;


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

對(duì)于本例中,CartInfo 與 Produc𮥮tInfo兩個(gè)類,可(kě)以這(zhè)樣聲明(míng)一(yī♣₹₩)下(xià).隻是(shì)CartManageφ₽∏r就(jiù)稍多(duō)幾句話(huà),β©如(rú)下(xià):


[Serializable]
public class CartManager : ISer ©ializable
{
private ArrayList _cart= λ₩new ArrayList();

public CartManager()
{
}

protected CartManager(Serializatio§π≤nInfo info, StreamingCon★•text context)
{
this._cart=(ArrayList)info.Getvalue("_cart",typeof(ArrayList));
}

void ISerializable.GetObjectData(Ser♠®©ializationInfo info, StreamingContex​☆≥₽t context)
{
info.Addvalue("_cart",this._cart);
}

private CartInfo find±σ∑CartInfo(string sid)
{
foreach(CartInfo ci i©"₽n this._cart)
{
if( ci.Product.SysID.Equalβ♠σ"s(sid) ) return ci;
}
return null;
}


public ArrayList getCa‍®rt()
{
return this._cart;
}


這(zhè)樣實現(xiàn)了(le)整個≈≈"α(gè)CartManager--CartInfo♥&--ProductInfo的(de)可(kě)序列化(huà)φφπγ聲明(míng),于是(shì)就(jiù±↓>≠)一(yī)切正常了(le)...


文(wén)章(zhāng)出自(zì):
http://www.cnblogs.cα¥&om/sharetop/archive/2005/10/08/250286←λδ.html



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

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