<ruby id="l7677"></ruby>
<ruby id="l7677"><video id="l7677"></video></ruby>
<track id="l7677"><menu id="l7677"></menu></track>
      <ruby id="l7677"></ruby>

    1. 用戶(hù)名:
      密 碼:
      為何選擇我們
      • 7年優(yōu)質(zhì)服務(wù)經(jīng)驗
      • 10萬(wàn)用戶(hù)的共同選擇
      • 更低的價(jià)格更好的服務(wù)
      • CNNIC四星級認證服務(wù)商
      • 擁有正規經(jīng)營(yíng)許可證(ICP)
      • 先進(jìn)的解析技術(shù)10分鐘生效
      • 6組DNS負載均衡更快更穩定
        虛擬主機域名注冊-常見(jiàn)問(wèn)題虛擬主機問(wèn)題 → 虛擬主機問(wèn)題


      (asp.net)關(guān)于SessionState與序列化的一點(diǎn)教訓
      作者:
      很簡(jiǎn)單的東西,因為在學(xué)習中遇到了,所以記錄下來(lái).

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

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

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

      一般我們在做一個(gè)WEB Application的時(shí)候,它的SessionState的Mode=InProc的,可參見(jiàn)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ù)器上,因為存在多個(gè)工作進(jìn)程,所以需要將它的寫(xiě)法改成 mode=StateServer了,否則就會(huì )造成前面所說(shuō)的Session中的值不確定的現象.但是,如果簡(jiǎn)單地這樣改一下,系統又報錯說(shuō)對于以StateServer 或者 SqlServer兩種方式保存會(huì )話(huà)狀態(tài),要求對象是可序列化的(大意如此)...所以我們還需要再將對象做一下可序列化聲明.

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

      [Serializable()]
      public class ProductInfo {

      private string f_SysID;


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

      對于本例中,CartInfo 與 ProductInfo兩個(gè)類(lèi),可以這樣聲明一下.只是CartManager就稍多幾句話(huà),如下:


      [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í)現了整個(gè)CartManager--CartInfo--ProductInfo的可序列化聲明,于是就一切正常了...


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



      來(lái)源:
      閱讀:6460
      日期:2007-03-29

      【 雙擊滾屏 】 【 推薦朋友 】 【 收藏 】 【 打印 】 【 關(guān)閉 】 【 字體: 】 
      上一篇:常見(jiàn)術(shù)語(yǔ)介紹
      下一篇:虛擬主機開(kāi)啟URLrewrite功能的方法介紹
        >> 相關(guān)文章
       
      CNNIC四星級注冊服務(wù)機構證書(shū)營(yíng)業(yè)執照網(wǎng)上警察 聯(lián)系在線(xiàn)客服包頭網(wǎng)站制作,包頭微信營(yíng)銷(xiāo),包頭網(wǎng)頁(yè)制作官方QQ有問(wèn)必答
      《中華人民共和國增值電信業(yè)務(wù)經(jīng)營(yíng)許可證》編號:川B2-20080058號
      精品2020亚洲日本免费_亚洲AV无码一区二区乱子伦AS_国产av无码片毛片_色悠悠久久久综合88

      <ruby id="l7677"></ruby>
      <ruby id="l7677"><video id="l7677"></video></ruby>
      <track id="l7677"><menu id="l7677"></menu></track>
          <ruby id="l7677"></ruby>