4

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

  • 我定义了一个 OperationContract,看起来像这样

[OperationContract] void InsertSomeData(string version, int someId);

  • 在使用 soapUI 测试服务时,我意识到如果我删除请求中的 someId 标签,我确实会在我的服务中收到值 0
  • 这是标准行为吗?实际上,我认为该服务会引发某种异常,因为该参数不可为空。
  • 我可以在我的服务中区分 0 作为传递的真实值和只是缺少标签,还是我必须提前使我的所有参数都可以为空

提前谢谢你的帮助。

4

1 回答 1

4

破解方式:

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

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

}

更长但更好的方法:http ://thorarin.net/blog/post/2010/08/08/Controlling-WSDL-minOccurs-with-WCF.aspx

于 2012-11-19T13:54:17.157 回答