首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

WCF:有没有办法删除ExtensionData字段?

WCF是Windows Communication Foundation的缩写,它是一种用于构建面向服务的、安全的、可靠的和可互操作的分布式应用程序的框架。

关于WCF的问题,如果您想要删除ExtensionData字段,可以通过使用DataContractSerializer的KnownTypes属性来实现。

具体来说,您可以创建一个自定义的DataContractSerializer,并在其中指定要使用的KnownTypes。然后,您可以将该自定义的DataContractSerializer用于序列化和反序列化WCF消息。

例如,您可以创建一个自定义的DataContractSerializer,如下所示:

代码语言:csharp
复制
public class CustomDataContractSerializer : DataContractSerializer
{
    public CustomDataContractSerializer(Type type) : base(type)
    {
        this.KnownTypes = new List<Type> { typeof(MyType) };
    }
}

在上面的代码中,MyType是您想要序列化和反序列化的类型。

然后,您可以使用该自定义的DataContractSerializer来序列化和反序列化WCF消息,如下所示:

代码语言:csharp
复制
CustomDataContractSerializer serializer = new CustomDataContractSerializer(typeof(MyType));
MyType myType = new MyType();
using (MemoryStream ms = new MemoryStream())
{
    serializer.WriteObject(ms, myType);
    ms.Position = 0;
    MyType deserializedMyType = (MyType)serializer.ReadObject(ms);
}

在上面的代码中,MyType是您想要序列化和反序列化的类型。

通过使用自定义的DataContractSerializer,您可以控制序列化和反序列化过程,并且可以避免出现ExtensionData字段。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

WCF技术剖析之十六:数据契约的等效性和版本控制

在一个WCF应用中,客户端和服务端必须通过等效的数据契约方能进行有效的数据交换。...随着时间的推移,不可避免地,我们会面临着数据契约版本的变化,比如数据成员的添加和删除、成员名称或者命名空间的修正等,如何避免数据契约这种版本的变化对客户端现有程序造成影响,就是本节着重要讨论的问题。...在客户端,WCF的服务调用并不完全依赖于某个具体的类型,客户端如果具有与服务端完全相同的数据契约类型定义,固然最好。...讨论了数据成员添加的情况,接着讨论数据成员删除的情况。...XML包含有数据契约中没有的数据,会将多余的数据进行反序列化,并将其放入ExtensionData属性中保存起来,由此解决数据丢失的问题。

874100
  • 我的WCF之旅(7):面向服务架构(SOA)和面向对象编程(OOP)的结合——如何实现Service Contract的继承

    在这方面,WCF为我们提供了很好的解决方案。所以我说WCF不但是为基于SOA的应用架构提供了技术支持,还通过相关的机制完成我们提出的这个“调和剂”的使命。...在上一篇文章[原创]我的WCF之旅(5):面向服务架构(SOA)对面向对象编程(OOP)的支持——如何实现Service Contract的重载(Overloading)中,我们谈到了WCF如何实现了对...这个Sample中,我们通过一个WCF Service实现了提供天气信息的功能,或者说,我们实现了一个用作天气预报的WCF Service。 1.   ...WhetherConditions     {          Clear,         Cloudy,         Overcost,         Rainy     } } BasicWhetherInfo包含连个字段...我们先删除我们生成的Code,按照以下的步骤来实现这样功能。

    1.7K60

    WCF入门(12)

    然后是如何对WCF进行https配置。这一 点在视频第52集有讲到。 言归正传。...第12集 Backward compatible WCF contract changes WCF合约改变后的向后兼容性   这一集主要内容来自https://msdn.microsoft.com/en-us...一般来说WCF服务部署到生产环境后,因为客户端的代理类已经生成,所以,服务端不建议再做更改。但总会有避免不了要更改的情况。下面就通过2个表格来对典型的情况做一些说明。...改变方法的返回值类型 如果新的返回值类型不能转换为客户端需要的类型,客户端就会获取到异常,否则不会 增加新的Operation 客户端无法调用到,所以不会有影响 移除Operation 如果客户端继续调用被删除的方法...[DataMember] public short EmployeeType { get; set; } public ExtensionDataObject ExtensionData

    43610

    Silverlight+WCF 实战-网络象棋最终篇之房间装修-WCF端(二)

    这是图片的存放文件夹格式: 2:装修房间需要增加的元素 增加的元素有: 1:用户头像[字段][显示QQ头像在房间坐位上] 2:房间游戏状态[字段][显示切换房间背景图] 3:房间坐位的用户[字段][...三:代码实现[WCF端] 1:WCF端代码:实体修改 WCF端:Player玩家实体 ExpandedBlockStart.gif /// /// 游戏玩家 by 路过秋天...room.RedInChair)//房间的红色座位有没有人 //{ // room.RedInChair = player.ColorValue =...room.BlackInChair)//房间的黑色座位有没有人 //{ // room.BlackInChair = player.ColorValue...服务端编绎过去后,客户端注意更新服务引用,接着由于服务端实体的两字段删除,必然会引发个别小错误了。

    44220

    检测WCF服务是否在线(动态执行WCF服务)

    在我们的系统里有多个wcf支撑。但是有的时候会莫名的停止,于是今天写了一个服务,定时去检测其他wcf服务是否在线。...那么最简单的办法自然是引用其他wcf服务让vs给我们自动生成clientProxy然后一个个去调用是否正常。但是这种办法显然不是我要的。我要弄一个通用的服务检测。   ...方案1:   对于httpbinding的wcf服务有个最简单的检测方法:就是用httpClient去请求一下服务地址看有没有服务描述xml返回。如果有就是live不然就是服务异常关闭了。...我们的目的是判断wcf是否还live,所以不要在意返回值。我们只要判断这次调用的异常是否是SocketException或者EndpointNotFindException即可。   ...这样,当需要监控新的wcf服务的时候只要在配置文件里添加一行协定,程序集,调用方法,endpoint的配置即可,当然协定所在的dll要复制到程序的跟目录下或者指定的文件下。

    1.3K70

    2019-1-27-wcf入门(6)

    本文demo已上传至github:xinyuehtx/WCFdemo 这个博客会介绍如何设置服务的会话 ---- 会话(Session) 还记得2019-1-25-wcf入门(5) - huangtengxiao...大家有没有疑问为什么服务端能够知道该向谁回复消息呢? 有人可能会说因为我们例子里面的TCP是面向连接的。...在服务实现上,对于SayHello方法,传入客户端的name并且保存为字段。...我们可以看到所有的回复都带上了客户端在会话启动方法传入的name 会话的问题 在WCF中客户端是通过一个通道创建了服务的透明代理。而当会话终止时,相应的通信通道也会关闭。...会话、实例化和并发 - Microsoft Docs ---- 本文会经常更新,请阅读原文: https://xinyuehtx.github.io/post/wcf%E5%85%A5%E9%97%A8

    50020

    如何在调用WCF服务之前弹出一个确认对话框?

    昨天有人在微博上问我如下一个问题: 老蒋,客户端调用wcf的一个接口函数时,有没有什么办法可以先弹出一个确认框,确认后再执行调用。...其实这个问题可以通过WCF的扩展来完成,具体来说这个扩展涉及到一个我们不太常用的组件“InteractiveChannelInitializer”,在我的《WCF全面解析》中对它有过概括性的介绍。...我们以Windows Form应用的方式编写了一个“计算器”,计算结果通过调用WCF服务来获取。在每次调用服务之前都会弹出一个确认对话框,真正的服务调用只有在用户确认之后方能进行。...AsyncCallback callback, object state) 5: { 6: bool cancel = MessageBox.Show(ConfirmMessage, "WCF...bool)asyncResult.AsyncState) 14: { 15: throw new InvocationCancelException("WCF

    1.3K90

    WCF入门级使用教程(转载请注明出处)

    ) 04.Client--Console Application,命令行程序,用于演示调用WCF的客户端程序 项目引用关系: 01.WCF ---独立项目,无引用 02.BLL ---引用WCF...-->Visual C#/Windows-->Class Libary,命名为01_WCF 2.WCF项目上右击,Add-->New Item-->WCF Service ,命名为CalculateService.cs...项目,完成对项目WCF的引用 4.把BLL中默认的Class1.cs删除,新建一个Test.Cs,内容如下:  1 using System; 2 using System.Collections.Generic...以外的文件都删除,然后双击CalculateService.svc,修改内容为 <%@ ServiceHost Language="C#" Debug="true" Service="<em>WCF</em>.CalculateService...表明IIS的环境没问题,如果不行,建议重新安装.net framework3.5(当然也有其它<em>办法</em>,就是增加svc后缀的映射,这个百度一下N多,就不重复了) 8.刚才的WEB项目里,应该还有一个Default.aspx

    94570

    Windows Server AppFabric:更好,更快,更便宜

    现在需要一种扩展的办法:如何将频繁访问的数据分布到多台服务器上直接让其访问,从而解决访问一台数据库服务器的瓶颈。...一旦对象进入缓存,应用程序可以更新缓存的版本或者显示的删除它;缓存数据也可以被缓存服务自行删除删除条件可以是设定的过期时间或者被更频繁访问的数据替代,缓存到本地的数据项同样如此,同时,本地缓存可以设置为与缓存群集的改变自动同步...应用程序一般是通过服务的方式暴露功能,对于Windows应用程序来说,这些服务很多情况下是通过WCF实现的,同时,一些服务的逻辑通过工作流来实现会更好,因此,在工作流基础上创建WCF服务也会有很大的可能...WCF提供常用暴露及使用服务的途径,WF提供创建工作流逻辑的支持。AppFabric既管理WCF服务,也管理工作流服务(工作流服务也是一种WCF服务)。其区别在于服务中包含的内容。...以代码为基础的WCF服务也有类似的模板,因此你可以立即将你的关注点放在用代码编写的业务逻辑上,而不用编写WCF基础结构或任何相关的宿主逻辑和管理功能——AppFabric替您完成了这些工作。

    1.4K80

    “设计应对变化”--实例讲解一个数据同步系统

    系列文章索引: [WCF邮件通信系统应用 之 数据同步程序 之 设计内幕 之 一] 同步一个数据库要发多少个数据包?...[WCF邮件通信系统应用 之 数据同步程序 之 设计内幕 之 二] "开门待客"还是“送货上门”?...[WCF邮件通信系统应用 之 数据同步程序 之 设计内幕 之 三] “设计应对变化”--实例讲解一个数据同步系统 [WCF邮件通信系统应用 之 数据同步程序 之 设计内幕 之 四] 唯一不变的就是一直在变...Oracle数据库的同步似乎要复杂一些,不知道最新的官方版本有没有提供一个直接的数据同步功能,现有的很多Oracle数据同步方案都采用导出数据文件,再在目标库上导入的方式,不是很方便.    ...系统使用每个表的最后修改日期(ZHXGRQ)字段作为更新的标记,检查了下数据,发现有51W多条数据都是 1999-1-1 ,除非程序将这51W条数据全部一次查询出来,否则只有另外想办法

    1K70

    快速入门系列--WCF--02消息、会话与服务寄宿

    经过WCF基础的ABC学习,已经可以构建简单的WCF的服务,使用不同的服务地址和绑定类型,根据业务提供所需的服务契约。但不禁想问,服务所使用的消息报文是什么样的形式么?蕴含什么样内容呢?...WCF服务是否支持会话?WCF所提供的服务是单例的呢还是单调的呢?服务寄宿和客户端代理是如何实现的呢?...可以这么说,整个WCF服务都是构建在SOAP消息的基础上的,而SOAP消息是建立在XML这种跨平台的数据格式的基础上的,有人可能会说WCF也支持Restful风格的服务并支持json格式的数据,的确是这样...所以仍然可以认为,WCF的初衷是为企业提供可靠的分布式SOA服务的,而WebAPI的出现,为WCF的不足之处进行了有利补充,用于提供公共的对外服务,更加的轻量级并与当下的互联网环境结合的更妥当。...数据契约的等价性 在生产系统中,会出现修改接口的场景(例如添加删除接口方法数据成员,尽量避免),可能会对原有系统造成破坏,可以通过使用系统提供的扩展字段来避免这样的情况发生,附上一个可空的例子。

    1.3K50

    MySql提示:The Server Quit Without Updating PID File(…)失败 103.36.167

    解决办法1.用命令“ps -ef|grep mysqld”查看是否有mysqld进程;2.如果有使用“kill -9 进程号”杀死进程,然后重新启动mysqld。...解决办法去mysql的数据目录/data看看,如果存在mysql-bin.index,就赶快把它删除掉吧,它就是罪魁祸首了。...43.241.19 04问题mysql在启动时没有指定配置文件时会使用/etc/my.cnf配置文件,请打开这个文件查看在[mysqld]节下有没有指定数据目录(datadir)。...解决办法请在[mysqld]下设置这一行:datadir = /usr/local/mysql/data 43.241.18 05问题skip-federated字段问题 。...解决办法检查一下/etc/my.cnf文件中有没有没被注释掉的skip-federated字段,如果有就立即注释掉吧。43.240.75 06问题错误日志目录不存在 。

    37320

    REST 入门介绍

    dudu的 HttpClient + ASP.NET Web API, WCF之外的另一个选择 讨论的人很多,说明RESTful API也开始在.NET 社区中得到重视,其中的回复有很多对REST不正确的观点...或许大家手边的.NET系统整合都还是使用WCF(甚至Web Service)进行跨主机沟通,但是当微软在ASP.NET MVC 4 Beta里也开始推广REST架构的ASP.NET Web API。...REST理论的中文详述,其中你可以了解到WCF Restful属于RPC 样式的 Web 服务,ASP.NET Web API属于RESTful Web 服务。...或新增一个含 id 资源(如果 id 不存在) DELETE Delete 删除一个资源 RESTFUL WEB SERVICE RESTful Web Service (又称 RESTful Web...删除 指定的元素 以上表格有没有很像我们一般在对数据库表格的操作顺序,进入一个 Table 的数据首页 (通常是列表),此页面会有「新增、更新、删除、详细」等连结,你想进行什么操作,就点那一个连结。

    1.2K80

    WebService又一个不爽的地方

    ; } } } 1.2、PersonQueryParameters类 对于Person类的集合(比如DataTable,List),通常会有搜索需求,而且搜索的字段要求能动态变化...知道了问题所在,解决办法就有了: 方法1: model层对于“搜索参数实体类”不要给私有成员赋任何初始值。...但是在后续测试中发现,如果把asmx换成用wcf(.svc)来实现,在UI层添加了Model引用后,vs.net不会再重复生成相应的类定义。 有图有真相: ? ?...webservice今日遇到的二个问题:DataTable + Namespace "青山遮不住,毕竟东流去",正如IE6会被其它浏览器取代一样,asmx技术也会慢慢淡出历史舞台,建议大家对于新项目,大胆的用wcf...来代替asmx吧,我会在下一篇博文中,写一个"wcf10分钟速成",帮助对于从没接触过wcf的asmx迷们,消除对wcf的恐惧,快速上手wcf.

    73980

    AServer - 基于Asp.net core Kestrel的超迷你http服务器

    以前我们开发一个.NET程序,比如控制台程序,Windows服务等,如果需要对外提供接口,我们通常会在程序里集成WCF,使用WCF对外提供RPC接口。...但是现在是.NET Core的时代,我们已经没有办法选择WCF了。...假设我们现在有个跑定时任务的控制台程序,这个程序需要对外提供3个Http接口: 1.查询所有任务 2.新增一个任务  3.删除一个任务   下面演示如何使用AServer来实现这3个接口。   ...  该接口的请求地址为/api/tasks/:taskId,请求方法为DELETE,如果删除成功则返回文本"ok"。...测试删除任务接口 ?   可以看到我们对这3个接口的测试都返回了预期的值,说明AServer正确的响应了我们的请求。

    85060

    EasyUi+MVC+WCF 删除信息--考试系统

    直接奔入主题吧,主要想写的是一个批量删除,如何从前台的DataGrid中获取相应的ID然后传到后台进行批量删除。      ...listExamineeId); return IsDeleteSuccess; //这里返回的还是在前台选中的数据ID list集合,可以返回其他数据 }   然后是WCF...服务层,调用B层的方法   下面是B层的方法    底层框架是已经提前搭好的,该删除是假删除,为了保留学生的考试记录,只是在表中添加了一个删除的标识。.../// /// 删除考生信息(按考生ID修改考生删除标识)-- 2014-12-16 11:01:52 /// ...//抛出异常 throw (ex); }      通过这次参加考试系统的项目,感触最深的就是知识你可能已经学过了,但是你没有办法把它应用到实践中去

    74910

    AServer - 基于Asp.net core Kestrel的超迷你http服务器

    以前我们开发一个.NET程序,比如控制台程序,Windows服务等,如果需要对外提供接口,我们通常会在程序里集成WCF,使用WCF对外提供RPC接口。...但是现在是.NET Core的时代,我们已经没有办法选择WCF了。...假设我们现在有个跑定时任务的控制台程序,这个程序需要对外提供3个Http接口: 1.查询所有任务 2.新增一个任务  3.删除一个任务   下面演示如何使用AServer来实现这3个接口。   ...  该接口的请求地址为/api/tasks/:taskId,请求方法为DELETE,如果删除成功则返回文本"ok"。...测试删除任务接口 ?   可以看到我们对这3个接口的测试都返回了预期的值,说明AServer正确的响应了我们的请求。

    1.1K10
    领券