2010-06-25 15 views
0

J'appelle donc un webservice wcf en utilisant Rest WebHttp. J'ai également mis en place une deuxième liaison mex pour les tests. Ma méthode fonctionne mais quand j'essaye de tester via un fiddler ou un httppost direct via une application cliente, j'obtiens une erreur de requête 400 Bad. Je passe plusieurs contrats de données à la méthode. Cela me force à utiliser le BodyStyle de wrapped mais je ne sais pas comment formater mon xml pour le test. J'ai créé une méthode de test pour l'essayer et la même erreur. Voici mon code: Toutes mes autres méthodes fonctionnent avec un contrat de données mais celui-ci où j'en ai deux ne fonctionne pas. Je crois que le problème est dans le XML au bas de ce post, il doit être emballé mais je ne sais pas comment l'envelopper.WCF Rest Mutliple DataContracts Wrapped

[OperationContract] 
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped)] 
string Test(wsAuth a, wsMed m); 

[DataContract(Namespace = "")] 
public class wsMed 
{ 
[DataMember] 
public string Test{ get; set; } 
} 

[DataContract(Namespace = "")] 
public class wsAuth 
{ 
[DataMember] 
public string UserName { get; set; } 
[DataMember] 
     public string Password { get; set; } 
[DataMember] 
public string DeviceId { get; set; } 
} 

mon xml que j'utilise

<Test> 
<wsAuth> 
<DeviceId>jenglish</DeviceId> 
<Password>treetop</Password> 
<UserName>jenglish</UserName> 
</wsAuth> 
<wsMed> 
<Test></Test> 
</wsMed> 
</Test> 

Répondre

1

Je crains que vous allez lutter avec cela. Tout d'abord, il vous manque les espaces de noms de sérialisation DataContract. Le DataContractSerializer est assez pointilleux sur la façon dont il veut que son format XML.

Il y avait une question juste recently de quelqu'un essayant de faire quelque chose de beaucoup plus simple et il avait du mal à faire accepter par WCF.

Here est une explication de la façon de formater les paramètres encapsulés.

+0

Salut Darrel, merci beaucoup pour les conseils et m'a indiqué quelques bons posts. Je l'ai à travailler, je gardais les espaces de noms comme « » mais mes méthodes se passaient un et m en tant que noms de paramater de sorte que les œuvres suivantes maintenant: \t jenglish \t TreeTop \t jenglish \t Carter

+0

@Carter Bonne chance. Vous en aurez besoin ;-) –