Метод веб-службы с дополнительными параметрами
Возможный дубликат:
Могу ли я получить необязательный параметр для веб-службы ASP.NET SOAP
Я попытался оглянуться, но я действительно не могу найти правильное решение для того, что я хочу делать. Извините за повторение, так как я знаю, что это было задано раньше. У меня есть метод веб-службы, в котором я хочу иметь необязательный параметр, например:
public void MyMethod(int a, int b, int c = -3)
Я уже знаю, что не могу использовать параметры с нулевым значением, поэтому я просто пытаюсь использовать значение по умолчанию. Проблема в том, что когда я вызываю этот метод без предоставления аргумента c, все равно получается исключение. Где-то я должен указать, что это действительно необязательно?
Thanksю
Ответы
Ответ 1
Вы можете получить дополнительные параметры при перегрузках и с помощью свойства 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)]
to
[WebServiceBinding(ConformsTo = WsiProfiles.None)]
если вы еще этого не сделали, поскольку WS-I Basic Profile v1.1
не разрешает перегрузки
Ответ 2
Использование методов перегрузки:
[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)
{
}
Ответ 3
Я просмотрел необязательные параметры и т.д., а прямые веб-службы asmx не поддерживают это (с WSDL-версиями по умолчанию). С WCF, однако, вы можете пометить параметры в вашем файле данных как IsRequired = false - see Дополнительные параметры в веб-службе ASP.NET