J'ai un service WCF qui utilise un contrat de message pour la requête et des réponses de données. Ce est le contrat de service:Sérialisation XML Problème lors de l'utilisation de WCF
[ServiceContract()]
public interface ISalesFinderService
{
[OperationContract()]
Response DoSomething(Request i_Info);
}
Le problème se produit lorsque renvoie une réponse au service. Voici le message de réponse:
[MessageContract()]
public class ObjectInfo
{
[MessageBodyMember(Name = "Name")]
public string m_Name;
}
[MessageContract()]
public class Response
{
private List<ObjectInfo> m_MyListOfObjects;
public FindSalesByLocationInfoMessageResponse()
{
m_MyListOfObjects = new List<ObjectInfo>();
}
[MessageBodyMember(Name = "ObjectsInfo")]
public List<ObjectInfo> MyListOfObjects
{
get { return m_MyListOfObjects; }
set { m_MyListOfObjects = value; }
}
}
Lorsque la réponse sort je peux voir (par Wireshark) que tous les champs à l'intérieur de la liste (de type ObjectInfo) ont été sérialisés en XML et ont l'étiquette <a:m_Name></a:m_Name>
bien que j'ajouté spécifiquement l'attribut MessageBodyMember au-dessus du membre de données m_Name
et lui a donné "Name" comme son tag.
Comment puis-je modifier ces noms de balises comme je le souhaite ???
merci ..
Merci beaucoup, vous avez résolu la question du nom, mais chaque membre dans la liste est toujours le « un » préfixe je peux voir que à travers le journal des messages (svcTraceviewer - niveau d'information trace), comment puis-je me débarrasser de ce "a" préfixe ?? merci. –
Liran
Ce préfixe "a:" doit faire partie d'un espace de noms XML quelconque. Voyez si vous trouvez une définition d'espace de noms XML quelque part dans votre message XML - quelque chose comme 'xmlns: a = .......'. Mais pourquoi cela vous dérange? Ça ne devrait vraiment pas être un problème, je pense ... –