minOccurs=»0″ для требуемых параметров в WSDL на ASP.NET веб-служба

#asp.net #vb.net #web-services #wsdl

Вопрос:

Я пишу простую веб-службу, используя Microsoft Visual Web Developer 2005 (экспресс-издание), и динамически создаваемый WSDL имеет значение minOccurs=»0″ для всех параметров.

Как получить minOccurs=»1″ для требуемых параметров, не прибегая к созданию статического файла WSDL?

Мне нужно сделать это с помощью ASP.NET Веб-служба (.NET v2). Итак, никакого WCF.

Ответ №1:

Я думаю, что XmlElement(IsNullable = true) атрибут сделает свою работу:

 using System.Xml.Serialization;

[WebMethod]
public string MyService([XmlElement(IsNullable = true)] string arg)
{
  return "1";
}
 

Комментарии:

1. Ты знаешь, почему это так IsNullable = true ? Мне это кажется действительно нелогичным. Если это можно обнулить, я бы подумал, что у вас может быть 0 случаев…

2. @C. Росс: Вот как это работает: считайте, что у вас нет значения для аргумента. Если элемент может быть обнулен, вы не можете его опустить (вы должны установить для него значение null). Если он НЕ МОЖЕТ быть обнулен, то вы можете опустить весь элемент целиком.

Ответ №2:

с форума msdn «Если вы создаете новую веб-службу, я настоятельно рекомендую создать веб-службу с помощью Windows Communication Foundation (WCF) вместо использования ASP.NET Веб-сервисы. В WCF, когда вы указываете контракт на передачу данных для своей службы, вы можете указать, что требуется данный элемент данных, используя свойство IsRequired атрибута DataMemberAttribute. »

источник — http://social.msdn.microsoft.com/forums/en-US/asmxandxml/thread/40ab5748-d32c-42a6-a47f-984ba18a1fe2/