91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

WCF的序列化問題怎么解決

發布時間:2021-12-15 09:32:15 來源:億速云 閱讀:138 作者:iii 欄目:編程語言

本篇內容主要講解“WCF的序列化問題怎么解決”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“WCF的序列化問題怎么解決”吧!

WCF 基礎連接已經關閉: 連接被意外關閉。
這個錯誤可能一不小心就會碰到。總結起來應該有兩種情況導致:
1、傳輸數據過大。
第一種情況,可以采取修改本地引用服務生成的節點內的屬性解決。
binding節點中maxReceivedMessageSize的值增大即可。不過一般不建議這樣使用,對于大批量數據可采取分頁讀取方式解決。因為大批量數據傳輸,影響傳輸速度并且容易出錯。
2、傳輸類中的屬性序列化問題
這種情況我正好碰到過。如下,
服務端類的是這樣的,其它屬性省略。

[DataContract]
   public class SDataModel
   {
       private string id;
       private DataTypeEnum type;
       [DataMember]
       public string ID
       {
           get { return id; }
           set { id = value; }
       }
       [DataMember]
       public DataTypeEnum Type
       {
           get { return type; }
           set { type = value; }
       }
   }
   [DataContract]
   public enum DataTypeEnum
   {
       [EnumMember]
       類型1 = 1,
       [EnumMember]
       類型2 = 2,
       [EnumMember]
       類型3 = 3,
       [EnumMember]
       類型4 = 4
   }

當時有一個方法只需要少量的屬性值就可以了,正好Type這個屬性時不需要的。所以
             SDataModel model = new SDataModel();


             model.ID = item.TBP_ID;
向客戶端傳輸model對象時,沒有包含Type。于是就報錯了,而且怎么也檢查不到,因為服務端執行也正常,但是客戶端卻異常了。
修改就是,在定義該字段時賦初值,改為

[DataContract]
    public class SDataModel
    {
        private string id;
        private DataTypeEnum type=DataTypeEnum.類型1;
        [DataMember]
        public string ID
        {
            get { return id; }
            set { id = value; }
        }
        [DataMember]
        public DataTypeEnum Type
        {
            get { return type; }
            set { type = value; }
        }
    }
    [DataContract]
    public enum DataTypeEnum
    {
        [EnumMember]
        類型1 = 1,
        [EnumMember]
        類型2 = 2,
        [EnumMember]
        類型3 = 3,
        [EnumMember]
        類型4 = 4
    }

另一種如果使用ADO.NET Entity連接數據庫生成數據模型時,要取消延遲加載。其實在我碰到的問題中,主要是枚舉類型傳輸問題。這里據我的理解就是。

序列化的過程是,序列化生成器將對象的基本類型 按照對象的結構 解析成流,然后傳輸。接收到以后,解析流中的內容,應該是將類型都變為字符串,通過字符串匹配的方式 和本地的基本類型的類型名匹配,然后恢復對象的類型,從而還原出原對象的結構和值。

但是對也這種自定義的枚舉,如果沒有賦值,是沒有基本類型的,因此序列化就報錯了。導致本地連接被關閉。而作為基本類型Int,String等因為是基類型,序列化中可以找到與之對應的類型,因此不會報錯。

到此,相信大家對“WCF的序列化問題怎么解決”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

wcf
AI

冷水江市| 天水市| 临海市| 蛟河市| 本溪市| 台安县| 林周县| 古丈县| 青浦区| 丹寨县| 许昌市| 积石山| 伊宁县| 巴南区| 浮山县| 德兴市| 靖西县| 班玛县| 抚顺市| 阿鲁科尔沁旗| 花莲县| 旅游| 景东| 策勒县| 木里| 泾阳县| 贵州省| 绥江县| 南澳县| 蒙阴县| 五原县| 山西省| 弥渡县| 黑水县| 光泽县| 洮南市| 阿合奇县| 喜德县| 上杭县| 普洱| 龙泉市|