ASP.NET Web服务中的可选参数

时间:2009-06-15 11:03:45

标签: asp.net .net web-services asmx

我有一个ASP.NET Web服务。这个Web服务工作正常。但是,WSDL将一些参数列为可选(minoccurs = 0),将其他参数列为非可选参数。一些可选参数实际上不是可选的,其他标记为非可选参数实际上是可选的。我想解决这个问题,但我找不到这些信息的来源。

在我看来,所有原始类型(int,boolean等)都是非可选的,所有其他参数都标记为可选。但是,我找不到可以更改此位置的位置。我想指定原始值的默认值(如果它们在请求中缺失)并指定哪个非基本参数实际上是可选的。我在哪里这样做?

2 个答案:

答案 0 :(得分:8)

我假设当您说ASP.net Web服务时,您正在使用ASMX扩展创建Web服务。我认为在这种情况下会发生的是所有可空类型都是可选的,不可空的变为非可选类型。

您也许可以手动编辑生成的WSDL文件。但是如果重新生成wsdl,你将不得不重做那项工作。

我建议您使用basisHttpBinding切换到WCF(除了您的服务名称,您的客户不应该注意到差异)。

使用WCF,您只需根据需要在数据合同中标记参数:

[DataMember(IsRequired="false")]

答案 1 :(得分:6)

基元不是引用类型,而是 value 类型。您可以通过几种方式将类型设为“可空”。

简写

int? i;

或长手在这里

Nullable<int> i;