Как установить minOccurs на 1 - PullRequest
1 голос
/ 21 июля 2009

Я создаю веб-сервис ASP.NET.

Мой код определен, как показано ниже, но я не могу понять, как wsdl указать minOccurs свойств FirstName и LastName. Я хочу, чтобы те, как требуется, и не может быть пустым. Возможно ли это?

[WebMethod()]
public void TestMethod(TestClass Test)
{
    ...
}

[Serializable]
public class TestClass
{
    public string FirstName { get; set; }
    public string LastName { get; set; }    
}

Ответы [ 3 ]

2 голосов
/ 21 июля 2009

Оказывается, что WSDL не используется для проверки входящего XML. Не имеет значения, можете ли вы указать minOccurs или нет - он не будет использоваться для проверки ввода.

0 голосов
/ 07 июня 2013

Я разместил подробный ответ в другой ветке с такой же проблемой: Как сделать, чтобы веб-сервис dotnet установил minOccurs = «1» для строкового значения .

Однако ответ для строк: нет .

Единственный способ сделать minOccurs = 1 без nullable = true - объявить свойство с без значения по умолчанию (строка по умолчанию имеет значение String.Empty ) и без свойства, позволяющего проверить, было ли указано значение (создание идентичного имени свойства с добавлением слова «Указано» к его имени).

И вы все еще ограничены, если ответ Джона Сандерса верен.

Оказывается, WSDL не используется для проверки входящего XML. Не имеет значения, можете ли вы указать minOccurs - он не будет использоваться для проверки ввода.

0 голосов
/ 21 июля 2009

Строки являются ссылочными типами и т. Д. По определению обнуляются. Если бы ваша собственность была целочисленной, minoccurs был бы 1.

Вы можете заставить Сериализатор не допустить, чтобы он был нулевым, поставив. [XmlElement ("name", IsNullable = false)]
выше собственности.

Редактировать: я имел в виду ссылочные типы вместо типов значений. Спасибо, Джорен!

...