更新WCF Web服务参考

时间:2016-01-20 01:15:44

标签: c# web-services wcf

我有一个WCF SOAP服务,最近更改了该方法的响应。我有其他应用程序使用此方法。我没有更改方法名称,它接受的参数。我做的唯一改变是我在响应对象中添加了2个新属性。说明如下,

方法:

Public Class2 GetData(SampleClass1 data, bool extraStuffRequired)
{
    var obj = new Class2();
    //Process data here and load into obj
    return obj;
}

改变前的Class2的定义:

Public class Class2
{
public string p1 {get; set;}
public string p2 {get; set;}
}

变更后Class2的定义:

Public class Class2
{
public string p1 {get; set;}
public string p2 {get; set;}

public string p3 {get; set;}
public string p4 {get; set;}
}

请注意,我添加了2个新属性p3和p4,并且基于busniess逻辑,我会在其中填充值或将它们设置为空字符串。

ConsumingApp1需要这些新属性,以便更新服务引用并获取生成的类并使用新属性(p3和p4)。

ConsumingApp2不需要它们,但它们确实调用了方法,但只使用p1& P2

我的问题是,我是否需要强制ConsumingApp2更新其服务引用,或者它实际上是否正常工作而没有ConsumingApp2进行任何更改?

1 个答案:

答案 0 :(得分:0)

,ConsumingApp2应该没有更新服务参考。因此,p3,p4的缺失值将初始化为默认值。在您的情况下,由于p3,p4是String类型,它们将被初始化为null。

对于DataContract版本规则如下

  1. 如果添加新的非必需成员,则客户端将保留 未受影响和缺失值初始化为默认值。

  2. 如果添加新的必需成员,则客户端将受到影响 抛出异常。

  3. 摘自[MSDN]的屏幕截图。1您还可以阅读有关Service Versioning&的更多信息。 Versioning Strategy enter image description here

    注意:在您发布的问题中,您尚未为数据类型声明任何DataContract或DataMember。