Как заставить максимальную длину строки в свойстве объекта веб-службы C #? - PullRequest
4 голосов
/ 17 октября 2008

В этом классе, например, я хочу установить ограничение на количество символов, которое могут позволить имя / фамилия.

public class Person
{
     public string FirstName { get; set; }
     public string LastName { get; set; }
}

Есть ли способ принудительного ограничения ограничения строки для имени или фамилии, поэтому , когда клиент сериализует этот перед отправкой мне, это вызовет ошибку на его стороне, если он нарушит ограничение длины?

Обновление: это нужно определить и принудительно ввести в самом WSDL, а не после того, как я получил недопустимые данные.

Ответы [ 3 ]

11 голосов
/ 29 марта 2011

некро время ... Стоит упомянуть, хотя.

using System.ComponentModel.DataAnnotations;
public class Person
{
     [StringLength(255, ErrorMessage = "Error")]
     public string FirstName { get; set; }
     [StringLength(255, ErrorMessage = "Error")]
     public string LastName { get; set; }
}
3 голосов
/ 17 октября 2008

Вы можете применить проверку схемы XML (например, maxLength facet), используя SOAP Extensions :

[ValidationSchema("person.xsd")]
public class Person { /* ... */ }

<!-- person.xsd -->

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

  <xsd:element name="Person" type="PersonType" />

  <xsd:simpleType name="NameString">
     <xsd:restriction base="xsd:string">
        <xsd:maxLength value="255"/>
     </xsd:restriction>
  </xsd:simpleType>

  <xsd:complexType name="PersonType">
    <xsd:sequence>
         <xsd:element name="FirstName" type="NameString" maxOccurs="1"/>
         <xsd:element name="LastName"  type="NameString" maxOccurs="1"/>
     </xsd:sequence>
  </xsd:complexType>
</xsd:schema>
0 голосов
/ 17 октября 2008

CЧтобы преобразовать свойство из свойства auto и проверить его самостоятельно, вы могли бы затем сгенерировать исключение аргумента или нечто подобное, что они должны были бы обработать перед отправкой.

ПРИМЕЧАНИЕ. Если языки, отличные от .NET, будут вызывать вас, вы, скорее всего, захотите проверить его и на стороне службы. Или на тесте minimun, чтобы увидеть, как это будет работать на другом языке.

...