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

本文关键字:Web 服务 方法 参数 | 更新日期: 2023-09-27 18:10:00

可能重复:
我可以为ASP.NET SOAP web服务提供一个可选参数吗

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

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

我已经知道我不能使用可以为null的参数,所以我只是尝试使用默认值。问题是,当我在不提供参数c的情况下调用此方法时,仍然会得到异常。有什么地方我必须说明它实际上是可选的吗?

谢谢

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

您可以通过重载和使用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服务不支持这一点(使用默认生成的WSDL(。但是,使用WCF,您可以将数据协定中的参数标记为IsRequired=false-请参阅ASP.NET web服务中的可选参数