网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

WCF的序列化问题怎么解决-创新互联

本篇内容主要讲解“WCF的序列化问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“WCF的序列化问题怎么解决”吧!

成都创新互联公司主营绥棱网站建设的网络公司,主营网站建设方案,app软件定制开发,绥棱h5微信小程序开发搭建,绥棱网站营销推广欢迎绥棱等地区企业咨询

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的序列化问题怎么解决”有了更深的了解,不妨来实际操作一番吧!这里是创新互联建站网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。


网页题目:WCF的序列化问题怎么解决-创新互联
当前URL:http://bjjierui.cn/article/hoijs.html

其他资讯