千家信息网

WCF的序列化问题怎么解决

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,本篇内容主要讲解"WCF的序列化问题怎么解决",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"WCF的序列化问题怎么解决"吧!WCF 基础连接已经关闭: 连接
千家信息网最后更新 2025年01月19日WCF的序列化问题怎么解决

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

类型 序列 传输 问题 对象 属性 数据 内容 情况 服务 生成 大批量 字符 字符串 客户 客户端 就是 方式 方法 结构 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 批量更新数据库一个字段 班级网络安全教育简报 数据库安全控制的方法和技术 产品经理好还是软件开发好 网络安全防范措施有哪些逻辑关系 网络技术最新发展 行为管理需要进服务器吗 泰安联想服务器代理客服电话 视图和表一样也存储着数据库 为什么服务器没有催眠模式 广州单据外贸软件开发公司 数据库技术与应用第四章笔记 数据库如何取消列不允许重复 南山区光纤网络技术开发厂家现货 北京智慧养老管理平台软件开发 石家庄创合网络技术 腾讯服务器可以保留多久记录 模拟农场2022无法连接服务器 网络安全哪年开始的 公众号服务器租赁费 mongodb 数据库同步 2017年工业网络安全事件 软件开发定制要多少钱 戴尔服务器怎么远程管理 福建华为服务器维修云主机 甘州区公安局网络安全大队刘伟 泉州网络安全科 典型服务器应用 2003服务器搭建 戴尔服务器r900
0