C# WCF-缺少被视为0的整数参数

C# WCF-缺少被视为0的整数参数,c#,wcf,web-services,soap,missing-data,C#,Wcf,Web Services,Soap,Missing Data,我正在使用WCF生成SOAP Web服务,现在我面临以下问题: 我有一个定义如下的操作合同 [经营合同] void InsertSomeData(字符串版本,int-someId) 在使用soapUI测试服务时,我意识到如果我删除请求中的someId标记,我会在服务中收到值0 这是标准行为吗?实际上,我假设服务抛出某种异常,因为参数不可为null 在我的服务中,是否可以将0作为传递的实际值与缺少的标记区分开来,或者是否必须事先将所有参数设置为null 提前感谢您的帮助。黑客攻击方式:

我正在使用WCF生成SOAP Web服务,现在我面临以下问题:

  • 我有一个定义如下的操作合同

[经营合同]
void InsertSomeData(字符串版本,int-someId)

  • 在使用soapUI测试服务时,我意识到如果我删除请求中的someId标记,我会在服务中收到值0
  • 这是标准行为吗?实际上,我假设服务抛出某种异常,因为参数不可为null
  • 在我的服务中,是否可以将0作为传递的实际值与缺少的标记区分开来,或者是否必须事先将所有参数设置为null
提前感谢您的帮助。

黑客攻击方式:

[OperationContract]
public void InsertSomeData(MyData data){...}

[DataContract]
public class MyData{
[DataMember]
public string version{get;set;}
[DataMember(IsRequired=true)]
public int someId{get;set;}

}

一个冗长但更好的方法:

不幸的是,我没有选择第一种方法。接口是预定义的,尽管我知道使用“请求对象”比传递多个参数要好得多(而且是可扩展的/可适应的)。我必须检查第二种方法,因为它更复杂。如果你找到更好的方法,请告诉我!:)我认为第二条肯定是一个非常好的解决方案,尽管它对于解决一项基本任务来说似乎相当复杂。正如我在问题中所说,我对这种行为感到有点震惊,因为我没有预料到。我是WCF的新手,我认为微软将以一种更舒适的方式处理这一需求……最后,尽管第二种方法相当复杂,但对我来说效果很好。已接受:)