J'ai créé un service Web via WCF. Ensuite, je l'ai exposé comme un service Web pour le rendre utilisable avec une application .NET 2.0. J'ai créé un DataContract avec DataMember qui pourrait être utilisé par le OperationContract exposé.Pourquoi l'attribut spécifié d'un DataMember de service Web doit-il être défini pour int et Data mais pas pour String
Je remarque que lorsque j'essaie de créer DataClass à transmettre dans le service Web, chaque attribut DataContract possède désormais un attribut "Spécifié" partenaire pour chaque membre.
Par exemple:
[DataContract]
public class Sales
{
[DataMember]
public int InvoiceNo;
...
}
Lorsque je crée une instance de ventes dans le client de service Web. J'ai l'attribut nommé InvoiceNo et InvoiceNoSpecified. Maintenant, voici ma question, quand l'attribut est de type string, je n'ai pas besoin de mettre l'attribut "Specified" correspondant à true, mais quand le type d'attribut est un int ou DateTime, si je ne mets pas le L'attribut "Specified" correspondant à true, la valeur devient nulle dans l'hôte de service Web. Est-il possible d'éviter de définir l'attribut spécifié? Parce que je dois appeler les fonctions de service Web dans beaucoup d'endroits dans mon code. Ce serait vraiment difficile de les suivre tous.
J'ai essayé d'utiliser DefaultValueAttribute pour celui-ci. Lorsque j'utilise une valeur par défaut, ce qui se passe est même si je définis la valeur du paramètre date dans le client.Comme je n'ai plus défini dateFrified = true, la valeur date est toujours la valeur par défaut. // code au client prm.DepositDate = dtp_Deposit.Value.Date; // code au service [DefaultValue (typeof (DateTime), "1900/01/01")] public DepositDate; – Nap
Remerciez l'homme. J'ai eu le même problème avec les services soaplib python et les clients .net. J'ai toujours dû définir Spécifié à true. Voici un exemple pour le résoudre en Python: @rpc (soap_types.Int (min_occurs = 1), _returns = soap_types.String) –
Elalfer