【问题标题】:wcf : string element nillable="false"wcf : 字符串元素 nillable="false"
【发布时间】:2015-12-08 19:11:42
【问题描述】:

我有一个客户要求我的required 字符串元素有nillable="false",目前wsdl 中的所有字符串都会出现nillable="true",IE:

<xs:element name="username" nillable="true" type="xs:string" />

如何更改nillable="false" ?!?我会就如何做到这一点提出任何建议?我是第一个遇到这种情况的人吗?

【问题讨论】:

标签: wcf wsdl


【解决方案1】:

您的数据合同中如何定义此元素?

如果尚未完成,请尝试将IsRequired=true 子句添加到数据成员属性:

[DataContract]
class YourDataStructure
{
   ......

   [DataMember(IsRequired=True)]
   string username;

   .....
}

除此之外,除了编写自己的 WsdlExporter 扩展外,我不知道有任何方法可以影响从您的 WCF 数据合同呈现的 XSD(这完全有可能 - 在这里似乎有点矫枉过正)。

【讨论】:

  • 嗨,马克。谢谢你的建议。我已经尝试过 IsRequired=True,它只删除了 minOccurs="0"。
  • @Steven:我很害怕 :-(
  • 嗨 Marc,好消息,我的 wcf 服务中已经有 WsdlExporter 用于扁平化 wsdl,因此在 WsdlExporter 扩展中实现这一点实际上很容易。感谢您的建议,如果没有它,我认为我不会走这条路。 (注意:我使用 blogs.msdn.com/stan_kitsis/archive/2005/08/06/448572.aspx 来遍历 XmlSchema,当找到合适的元素时,我能够去 el.IsNillable=false; 并且它起作用了。再次感谢。史蒂文
  • @stevenrosscampbellless,您能与我分享您的 WSDLExporter 解决方案吗?我面临着类似的问题。我没有 WSDLExporter,我目前正在寻找可能的解决方案。我有很多例子,但没有一个涉及nillables。
  • 这不会使架构元素不可空 - 像 BCS (SharePoint) 这样的消费者仍然不会将此架构理解为具有“非空”值。我知道这是一个的答案,但是这个完全相同的答案已经在多个地方得到了断言,它没有解决基本问题WCF XSD 一代。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-20
  • 2014-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多