好的,这是一个奇怪的问题.我在项目中遇到了一段代码,它以编程方式创建基于接口的ChannelFactory.接口中的方法有三个参数.现在,当我查看实际的WCF服务代码时,该方法只需要两个参数,但是从客户端发送三个参数.
我希望服务在收到额外参数时会中断,但事实并非如此.有谁知道为什么这个有效?
服务调用被编码到线路上并发送到接收器.根据XML/Binary/Json解析器的严格程度,简单地忽略额外参数.
当WCF服务器上的存根代码接收到有线调用时,它不会覆盖序列化数据包,并说"他们正在调用MethodX,我得到了param1,param2和param3 - 让我们尝试将它们填入方法中......哦.它.只需要param1和param2.轰隆."
相反,它说的是:"他们叫做MethodX.很好.它需要什么参数?Param1和Param2.让我们看看这些是否存在于数据包中.哦!他们在这里.很好.我会用它们." 它完全忽略了其余部分.
一些说明: