为什么向我的WCF服务操作添加参数是有效的

本文关键字:参数 有效 添加 操作 我的 WCF 服务 为什么 | 更新日期: 2023-09-27 18:20:11

  1. 我选择了一个新项目->WCF->WCF服务应用程序
  2. 我将解决方案发布到我的Web服务器
  3. 我创建一个客户端应用程序并添加对我的web服务器http://mywebserver/service1.svc的引用
  4. 客户端运行GetData(1)方法

到目前为止一切都很好。

  1. 我将服务应用程序从更改为:Function GetData(ByVal value As Integer)Function GetData(ByVal value As Integer, value2 As Integer)

  2. 我再次发布解决方案

  3. 令我惊讶的是,客户端应用程序运行GetData(1)方法很好。我希望它崩溃并要求第二个参数

知道为什么它没有崩溃吗?

我已经尝试重新启动web服务器服务,但仍然没有失败。

我已经在Web.config…中尝试过这个代码

<caching>
    <outputCache enableOutputCache="false"/>
    <outputCacheSettings>
    <outputCacheProfiles>
        </outputCacheProfiles>
    </outputCacheSettings>
</caching>

仍然没有失败。

知道吗?

为什么向我的WCF服务操作添加参数是有效的

这只是因为WCF使用Lax版本控制。

在许多其他场景中,服务开发人员可以做出以下假设向数据协定添加新的可选成员不会中断现有客户端。这需要服务开发人员进行调查现有客户端是否未执行架构验证,以及它们忽略未知的数据成员。在这些情况下利用数据协定功能在中添加新成员非中断方式。服务开发人员可以通过如果用于版本控制的数据契约功能已经用于服务的第一个版本。

许多Web服务平台,包括WCF和XMLWeb服务,默认情况下不执行模式验证,因此允许wsdl未描述的额外元素。并非每个平台都是这样,一些java客户端执行严格的模式验证。

现在尝试删除一个参数,将不会得到相同的结果。

http://msdn.microsoft.com/en-us/library/ff384251.aspx

向操作签名添加新参数-客户端不受影响。在服务中将新参数初始化为默认值。