wcf 如何为 SOAP Web 服务设置不可为空的 DataMember

Posted

技术标签:

【中文标题】wcf 如何为 SOAP Web 服务设置不可为空的 DataMember【英文标题】:wcf how to set not nullable DataMember for SOAP Web Service 【发布时间】:2019-04-15 02:40:23 【问题描述】:

我正在实施 wcf 服务。 我的班级结构如下:

[DataContract]
public class NotificationsSapInfo

    [DataMember]
    [Required]
    [StringLength(3)] 
    public string ID_CLIENT  get; set; 
    [DataMember]
    [Required]
    [StringLength(60)]
    public string ID_OBJECT_CODE  get; set; 
    [DataMember]
    [Required]
    [StringLength(60)]
    public string ID_TYPE  get; set; 
    [DataMember]
    [StringLength(60)]
    public string ID_SUB_TYPE  get; set; 
    [DataMember]
    [StringLength(4)]
    public string ID_DIVISION  get; set; 
    [DataMember]
    [StringLength(50)]
    public string ID_LINE  get; set; 

出现的问题是在生成的 WSDL 中似乎忽略了 RequiredStringLength 属性。

这是生成的 WSDL 部分。

<xs:complexType name="NotificationsSapInfo">

<xs:sequence>

<xs:element name="ID_CLIENT" type="xs:string" nillable="true" minOccurs="0"/>

<xs:element name="ID_DIVISION" type="xs:string" nillable="true" minOccurs="0"/>

<xs:element name="ID_LINE" type="xs:string" nillable="true" minOccurs="0"/>

<xs:element name="ID_OBJECT_CODE" type="xs:string" nillable="true" minOccurs="0"/>

<xs:element name="ID_SUB_TYPE" type="xs:string" nillable="true" minOccurs="0"/>

<xs:element name="ID_TYPE" type="xs:string" nillable="true" minOccurs="0"/>

</xs:sequence>

</xs:complexType>

我错过了什么?

提前致谢

【问题讨论】:

【参考方案1】:

不确定这是否适用于您的情况,但我将其用于数据合同和数据验证:

在您的 DataMember 属性上尝试添加:IsRequired = true

[DataMember(IsRequired = true)]

【讨论】:

这个参数我已经用过了,可惜不起作用.. :( @Galma88 唯一的其他选择是使用此处引用的扩展名:***.com/questions/10602749/…

以上是关于wcf 如何为 SOAP Web 服务设置不可为空的 DataMember的主要内容,如果未能解决你的问题,请参考以下文章

Spring - 如何为soap服务构建一个junit测试

自定义 WCF Web 服务参考的 SOAP

WCF 服务而不是 ASMX Web 服务?

将授权标头添加到 WCF 基架 SOAP Web 服务

如何使用 wcf 的 .net Web 服务创建安全的 SOAP 主体?

XSD 第一个合约 - WCF Soap Web 服务