具有可选参数的Web服务方法

可能重复:
我是否可以为ASP.NET SOAP Web服务提供可选参数

我试过四处寻找,但我真的找不到合适的解决方案。 很抱歉重复,因为我知道之前有人问过这个问题。 我有一个Web服务方法,我想在其中有一个可选参数,例如:

public void MyMethod(int a, int b, int c = -3) 

我已经知道我不能使用可空参数,所以我只想尝试使用默认值。 问题是,当我调用此方法而不提供参数时,c仍然会获得exception。 有什么地方我必须指定它实际上是可选的吗?

Thanksю

您可以通过重载和使用MessageName属性来实现可选参数。

 [WebMethod(MessageName = "MyMethodDefault")] public void MyMethod(int a, int b) { MyMethod( a, b, -3); } [WebMethod(MessageName = "MyMethod")] public void MyMethod(int a, int b, int c) 

为此,您可能还需要更改

 [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 

 [WebServiceBinding(ConformsTo = WsiProfiles.None)] 

如果你还没有这样做,因为WS-I Basic Profile v1.1不允许重载

使用方法重载:

 [WebMethod(MessageName = "MyMethod1")] public void MyMethod(int a, int b) { return MyMethod(a, b, -3); } [WebMethod(MessageName = "MyMethod2")] public void MyMethod(int a, int b, int c) { } 

我之前已经研究过可选参数等,并且直接asmx Web服务不支持此function(使用默认生成的WSDL)。 但是,使用WCF,您可以将datacontract中的参数标记为IsRequired = false – 请参阅ASP.NET Web服务中的可选参数