wcf:string element nillable ="false"

ste*_*ell 6 wcf wsdl

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

<xs:element name="username" nillable="true" type="xs:string" />
Run Code Online (Sandbox Code Playgroud)

我怎么能改变nillable="false"?!?我会就如何做到这一点提出任何建议?我是第一个碰到这个的人吗?

mar*_*c_s 1

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

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

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

   [DataMember(IsRequired=True)]
   string username;

   .....
}
Run Code Online (Sandbox Code Playgroud)

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

  • 这并不会使架构元素不可为空 - 像 BCS (SharePoint) 这样的使用者仍然不会将此架构理解为具有“非空”值。我*知道*这是一个*旧的*答案,但这个完全相同的答案已在多个地方断言,并且它*不*解决 WCF XSD 生成的根本问题。 (2认同)