Je développe un service WCF en utilisant VSTS 2008 + .Net 3.5 + C# et ça fonctionne très bien quand j'utilise aussi VSTS 2008 pour développer un client (en utilisant la fonction Add Service Reference) au code de proxy des services Web client généré automatiquement). Le WCF que j'ai développé utilise basicHttpBinding. Le problème que j'ai rencontré est, lorsque j'utilise Visual Studio.Net (Visual Studio 2003) pour générer le code de proxy des services Web client, il existe un paramètre d'entrée supplémentaire pour une méthode OperationContract appelée IdSpecified (type booléen). J'ai testé que lorsque Spécifier IdSpecified à true, la valeur du paramètre Id sera correctement transmise au serveur WCF, mais quand je spécifie IdSpecified à false, peu importe les valeurs que je spécifie au paramètre Id, côté serveur WCF, Id sera toujours 0. J'ai également essayé pour le type de paramètre d'entrée comme chaîne, il n'y a pas un tel paramètre d'entrée supplémentaire du côté client.VS2003 Web Reference pour un service WCF a un paramètre supplémentaire "IdSpecified"
Ma question est pourquoi il y a un paramètre supplémentaire? Quelle est sa signification et est-il possible d'éviter de générer un tel paramètre supplémentaire?
est ici de Visual Studio.Net côté client généré automatiquement des services Web code proxy,
public StudentInfo Poll(int Id, [System.Xml.Serialization.XmlIgnoreAttribute()] bool IdSpecified)
Voici mon VSTS 2008 code côté serveur WCF,
[OperationContract]
StudentInfo Poll(int Id);
EDIT 1: voici une partie de le code généré automatiquement du côté client à propos de la méthode Poll.
[return: System.Xml.Serialization.XmlElementAttribute(IsNullable=true)]
public StudentInfo Poll(int Id, [System.Xml.Serialization.XmlIgnoreAttribute()] bool IdSpecified) {
object[] results = this.Invoke("Poll", new object[] {
Id,
IdSpecified});
return ((StudentInfo)(results[0]));
}
[ici] (http://blogs.microsoft.co.il/blogs/oshvartz/archive/2008/09/06/svcutil-generating-wcf-client-and-the-is-is-field-specified-issue .aspx) est blog à ce sujet –
Salut ArsenMkrt, le blog semble très bien, mais pas le même problème que je l'ai mentionné ici. Dans le blog, il semble que le code proxy côté client généré automatiquement contient une propriété appelée IdSpecified, mais dans mon scénario, il n'y a pas de telle propriété, juste un paramètre supplémentaire pour la méthode Poll. Vous pouvez voir mon code mis à jour dans la section EDIT 1 de mon article original. Des solutions à mon problème? – George2
George, c'est la même chose. Un paramètre supplémentaire a été ajouté car l'int était un paramètre, pas une propriété. Si vous transmettez une classe avec une seule propriété int, vous verrez une propriété IdSpecified distincte. –