Подтвердить что ты не робот

Метод веб-службы с дополнительными параметрами

Возможный дубликат:
Могу ли я получить необязательный параметр для веб-службы ASP.NET SOAP

Я попытался оглянуться, но я действительно не могу найти правильное решение для того, что я хочу делать. Извините за повторение, так как я знаю, что это было задано раньше. У меня есть метод веб-службы, в котором я хочу иметь необязательный параметр, например:

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

Я уже знаю, что не могу использовать параметры с нулевым значением, поэтому я просто пытаюсь использовать значение по умолчанию. Проблема в том, что когда я вызываю этот метод без предоставления аргумента c, все равно получается исключение. Где-то я должен указать, что это действительно необязательно?

Thanksю

4b9b3361

Ответ 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