2009-10-19 10 views
6

J'ai un client qui est exigeant que mes required éléments de chaîne ont nillable="false", actuellement toutes les chaînes dans le wsdl sortir sera nillable="true", IE:WCF: élément de chaîne nillable = « false »

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

Comment puis-je changez le nillable="false"?!? Je vais prendre des suggestions sur la façon de le faire? Suis-je la première personne à l'avoir rencontrée?

+0

Connexe: http://stackoverflow.com/questions/9039850/wcf-wsdl-nillable-attributes/21266714#21266714. – Steven

Répondre

1

Comment cet élément est-il défini dans votre contrat de données?

Si ce n'est pas déjà fait, essayez d'ajouter une clause IsRequired=true à l'attribut membre de données:

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

    [DataMember(IsRequired=True)] 
    string username; 

    ..... 
} 

Autre que cela, je ne suis pas au courant d'aucune façon d'influencer le XSD étant rendu de vos données WCF contrat, à court d'écrire votre propre extension WsdlExporter (ce qui est tout à fait possible - semble juste un peu exagéré ici).

+0

Bonjour Marc. Merci pour la suggestion. J'ai essayé IsRequired = True, qui ne supprime que minOccurs = "0". – stevenrosscampbell

+0

@Steven: J'avais peur de cela :-( –

+0

Salut Marc, Bonne nouvelle, j'avais déjà le WsdlExporter dans mon service wcf pour aplatir le wsdl, donc c'était en fait assez facile à implémenter dans l'extension WsdlExporter Merci pour la suggestion, sans cela, je ne pense pas que je serais allé dans cette avenue (Note: J'ai utilisé http://blogs.msdn.com/stan_kitsis/archive/2005/08/06/448572.aspx pour Marcher le XmlSchema, et quand l'élément approprié a été trouvé, je pouvais aller el.IsNillable = false, et cela a fonctionné Merci encore Steven – stevenrosscampbell

Questions connexes