精品一区国产精品,一级a做视频免费观看日本,午夜三级理论在线观看时,免费人成在线现看视频色

      虛擬主機(jī)域名注冊-常見問題虛擬主機(jī)問題 → 虛擬主機(jī)問題


    (asp.net)關(guān)于SessionState與序列化的一點(diǎn)教訓(xùn)
    作者:
    很簡單的東西,因?yàn)樵趯W(xué)習(xí)中遇到了,所以記錄下來.

    事情的起因是,我在做一個購物藍(lán)時(shí),將一個自定義的類CartManager整個放進(jìn)Session中,它的部分代碼如下,其實(shí)就是有一個Private的ArrayList成員_cart用來放CartInfo類實(shí)例,而CartInfo類又包括一個成員ProductInfo _product和一個double _moneny...并不復(fù)雜.但是我都沒有弄任何Serializable的東西,于是...

    本機(jī)調(diào)試沒問題,放到服務(wù)器上卻發(fā)現(xiàn)這個購物車表現(xiàn)非常怪異,時(shí)好時(shí)壞,總覺得好象Session里的東西亂得很,有時(shí)能存進(jìn)去有時(shí)存不進(jìn)?

    比較了本機(jī)與服務(wù)器的環(huán)境,我知道問題肯定與SessionState有關(guān).因?yàn)榉⻊?wù)器用了Web Farm(并且將最大工作進(jìn)程數(shù)設(shè)置成了10).

    一般我們在做一個WEB Application的時(shí)候,它的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"
    />
    在服務(wù)器上,因?yàn)榇嬖诙鄠工作進(jìn)程,所以需要將它的寫法改成 mode=StateServer了,否則就會造成前面所說的Session中的值不確定的現(xiàn)象.但是,如果簡單地這樣改一下,系統(tǒng)又報(bào)錯說對于以StateServer 或者 SqlServer兩種方式保存會話狀態(tài),要求對象是可序列化的(大意如此)...所以我們還需要再將對象做一下可序列化聲明.

    如果要保存的對象很簡單,都是由基本類型組成的,就只需要聲明一下屬性即可,如:

    [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;
    }


    這樣實(shí)現(xiàn)了整個CartManager--CartInfo--ProductInfo的可序列化聲明,于是就一切正常了...


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



    來源:
    閱讀:6293
    日期:2007/3/29

    【 雙擊滾屏 】 【 推薦朋友 】 【 收藏 】 【 打印 】 【 關(guān)閉 】 【 字體: 】 
    上一篇:常見術(shù)語介紹
    下一篇:虛擬主機(jī)開啟URLrewrite功能的方法介紹
      >> 相關(guān)文章