如何强制 C# Web 服务对象属性中的最大字符串长度?

发布于 2024-07-06 16:43:22 字数 313 浏览 9 评论 0原文

例如,在此类中,我想强制限制名字/姓氏可以允许的字符数。

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

有没有办法强制对名字或姓氏进行字符串限制,因此当客户端在将其发送给我之前对其进行序列化时,如果违反长度限制,则会在他们这边抛出错误?

更新:这需要在 WSDL 本身中进行识别和强制,而不是在我收到无效数据之后。

In this class for example, I want to force a limit of characters the first/last name can allow.

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

Is there a way to force the string limit restriction for the first or last name, so when the client serializes this before sending it to me, it would throw an error on their side if it violates the lenght restriction?

Update: this needs to be identified and forced in the WSDL itself, and not after I've recieved the invalid data.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

ゝ偶尔ゞ 2024-07-13 16:43:22

死灵时间……不过值得一提。

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; }
}

necro time... It worth mentioning though.

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; }
}
柏拉图鍀咏恒 2024-07-13 16:43:22

您可以使用 SOAP 扩展

[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>

You can apply XML Schema validation (e.g., maxLength facet) using 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>
情丝乱 2024-07-13 16:43:22

从自动属性转换属性并自己验证它,然后您可以抛出参数异常或类似的东西,他们在提交之前必须处理这些异常。

注意:如果 .NET 以外的语言将调用您最有可能也希望在服务端验证它。 或者进行最小测试,看看它在另一种语言中如何工作。

COnvert the property from an auto property and validate it yourself, you could then throw an argument exception or something similar that they would have to handle before submission.

NOTE: if languages other than .NET will be calling you most likely want to be validating it on the service side as well. Or at minimun test to see how it would work in another language.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文