2009-10-19 53 views
6

我有一個客戶端被強制要求我required字符串元素有nillable="false",目前在WSDL的所有串出來會nillable="true",IE:WCF:字符串元素的nillable =「假」

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

哪有我更改nillable="false"?!?我會就如何做到這一點提出任何建議?我是第一個遇到過這個問題的人嗎?

+0

相關:http://stackoverflow.com/questions/9039850/wcf-wsdl-nillable-attributes/21266714#21266714。 – Steven 2014-01-21 18:54:53

回答

1

這個元素是如何在數據契約中定義的?

如果它沒有這樣做,嘗試添加一個IsRequired=true子句中的數據成員屬性:

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

    [DataMember(IsRequired=True)] 
    string username; 

    ..... 
} 

除此之外,我不知道的任何方式影響XSD從WCF數據所呈現合約,寫你自己的WsdlExporter擴展(這是完全可能的 - 只是在這裏似乎有點矯枉過正)。

+0

嗨,馬克。感謝您的建議。 我試過了IsRequired = True,只刪除了minOccurs =「0」。 – stevenrosscampbell 2009-10-19 17:22:54

+0

@Steven:我很害怕這個:-( – 2009-10-19 17:26:08

+0

Hi Marc, 好消息,我已經在我的wcf服務中使用了WsdlExporter來平滑wsdl,所以在WsdlExporter擴展中實現它實際上很容易。感謝您的建議,沒有它,我不認爲我會沿着那條大道走。 (注意:我使用http://blogs.msdn.com/stan_kitsis/archive/2005/08/06/448572.aspx走過XmlSchema,找到合適的元素後,我就可以去el.IsNillable = false;並且它能正常工作 再次感謝 Steven – stevenrosscampbell 2009-10-19 18:35:18