我有一个ASP.NET Web服务。这个Web服务工作正常。但是,WSDL将一些参数列为可选(minoccurs = 0),将其他参数列为非可选参数。一些可选参数实际上不是可选的,其他标记为非可选参数实际上是可选的。我想解决这个问题,但我找不到这些信息的来源。
在我看来,所有原始类型(int,boolean等)都是非可选的,所有其他参数都标记为可选。但是,我找不到可以更改此位置的位置。我想指定原始值的默认值(如果它们在请求中缺失)并指定哪个非基本参数实际上是可选的。我在哪里这样做?
答案 0 :(得分:8)
我假设当您说ASP.net Web服务时,您正在使用ASMX扩展创建Web服务。我认为在这种情况下会发生的是所有可空类型都是可选的,不可空的变为非可选类型。
您也许可以手动编辑生成的WSDL文件。但是如果重新生成wsdl,你将不得不重做那项工作。
我建议您使用basisHttpBinding切换到WCF(除了您的服务名称,您的客户不应该注意到差异)。
使用WCF,您只需根据需要在数据合同中标记参数:
[DataMember(IsRequired="false")]
答案 1 :(得分:6)
基元不是引用类型,而是 value 类型。您可以通过几种方式将值类型设为“可空”。
简写
int? i;
或长手在这里
Nullable<int> i;