2010-12-06 15 views
0

Je dois intercepter la réponse d'un service créé à l'aide de WCF avec webHttpBinding (service basé sur REST).Comment personnaliser XmlResponse dans le service WCF à l'aide de WebHttpBinding

Maintenant, je veux que le XML soit émis de façon personnalisée. Pour exemple, actuellement une méthode de service renvoie la sortie comme ceci:

<User xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> 
    <UserCellInfo>+91-98102239</UserCellInfo> 
    <UserDepartment>.NET Projects</UserDepartment> 
    <UserID>A10129</UserID> 
    <UserName>Jeff Thomson</UserName> 
</User> 

mais je veux dans un autre way.Something personnalisé comme ci-dessous

<?xml version="1.0" encoding="UTF-8"?> 
<rsp> 
    <User> 
     <UserCellInfo>+91-98102239</UserCellInfo> 
     <UserDepartment>.NET Projects</UserDepartment> 
     <UserId>A10129</UserId> 
     <UserName>Jeff Thomson</UserName> 
    </User> 
</rsp> 

Dans MSDN, je lis que je dois utiliser IDispatchMessageInspector pour intercepter le XML qui sort. Mais je n'ai pas pu trouver de référence de code ou d'exemple pour cela.

De bonnes idées pour y parvenir?

+0

Si vous postez du code ou du code XML, ** s'il vous plaît ** mettez en surbrillance ces lignes dans l'éditeur de texte et cliquez sur le bouton "code" (101 010) sur la barre d'outils de l'éditeur pour bien le mettre en forme et la syntaxe le mettre en évidence! –

Répondre

1

Donc je suppose que votre méthode de service WCF renvoie une instance d'un objet User dans cet appel de méthode, n'est-ce pas?

Pourquoi ne pas simplement définir une classe wrapper appelée rsp qui contient l'instance User? Puis renvoyer l'objet rsp rendrait dans le style désiré. Juste un bon emballage propre - pas de manipulation XML désordonnée à la volée ...

+0

Je dois supprimer toutes les informations d'espace de nom ainsi que xmlns: i = "http://www.w3.org/2001/XMLSchema-instance" donc je dois intercepter. Je n'ai trouvé aucun moyen de les supprimer –

+0

@Kunal: ** pourquoi ** avez-vous besoin de supprimer ces xmlns = attribut ?? Ce sont là pour une bonne raison! –

+0

hmm J'ai posé cette question à mon utilisateur de service qui est un développeur d'applications j2me, il a dit qu'il a limité l'API et que vous voulez créer une fonction standard pour tous les OS mobiles (Android, Blackberry, etc.). Il était difficile pour lui de créer des analyseurs séparés? –