可能重复:
Can I have an optional parameter for an ASP.NET SOAP web service
我试过四处寻找,但我真的找不到合适的解决方案。很抱歉重复,因为我知道之前有人问过这个问题。我有一个Web服务方法,我想在其中有一个可选参数,如:
public void MyMethod(int a, int b, int c = -3)
我已经知道我不能使用可空参数,所以我只想尝试使用默认值。问题是,当我调用此方法而不提供参数时,c仍然会获得异常。有什么地方我必须指定它实际上是可选的吗?
Thanksю
答案 0 :(得分:26)
您可以通过重载和使用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
不允许重载
答案 1 :(得分:9)
使用方法重载:
[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)
{
}
答案 2 :(得分:3)
之前我已经研究过可选参数等,直接asmx Web服务不支持这个(使用默认生成的WSDL)。但是,使用WCF,您可以将datacontract中的参数标记为IsRequired = false - 请参阅Optional parameters in ASP.NET web service