J'ai un service avant droit comme:WCF DataContractSerializer ne sérialisation
[ServiceContract]
public interface IService
{
[WebGet(UriTemplate = "/", ResponseFormat = WebMessageFormat.Xml)]
[OperationContract]
List<DataContracts.MyThing> Get();
}
Mon DataContract est straightfoward, rien d'inhabituel là:
[DataContract]
public class MyThing
{
[DataMember]
public string ID { get; set;}
}
J'utilise le WebServiceHostFactory au lieu de liaison manuelle.
Quand je lance ceci sur IIS 5.1 (Windows XP, mon environnement de dev local), je reçois un retour comme:
<ArrayOfMyThing>
<MyThing></MyThing>
</ArrayOfMyThing>
Cependant, quand je laisse tomber exactement le même code sur IIS 6.0 dans une zone de production , je reçois un retour comme:
<ArrayOfMyThing
xmlns="http://schemas.datacontract.org/2004/07/My.NameSpace.DataContracts"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance"http://my.website.com/services/>
</ArrayOfMyThing>
ma question est double:
- Pourquoi est-il ne sert pas les espaces de noms sur ma développem locale environnement?
- Pourquoi crée-t-il du code XML incorrect en ajoutant le chemin de base du service à l'intérieur de la balise?
De toute évidence, le mauvais nœud XML casse n'importe quel analyseur, ce qui est absolument inutile pour moi. Assez curieusement, cela se passe uniquement sur cette méthode de service particulière, tous les autres fonctionnent bien, et sont configurés de la même manière.
EDIT: Lorsque j'utilise JSON, tout semble bon, donc je ne pense pas que ce soit un problème avec WCF. Ce doit être un problème de sérialiseur.
ressemble à une différence dans la version .NET Framework. –
Oh, bon point, je cours en local 3.5SP1, laissez-moi vérifier le serveur. – FlySwat
Il fonctionne également 3.5 SP1 :( – FlySwat