2010-09-01 9 views
0

Je souhaite que mon service WCF renvoie un fichier xml qui a été signé.Comment signer un fichier XML dans un service wcf?

J'ai trouvé une documentation qui montre comment signer un XmlDocument sur msdn, mais comme une fonction de WCF ne peut pas retourner un XmlDocument Je ne sais pas si ce qui suit fonctionnerait (semblable à question)

public XmlElement GetXml() { 
     var doc = new XmlDocument(); 
     // add data to doc 
     // sign doc 
     return doc.DocumentElement; 
    } 

Serait-il toujours possible de vérifier la signature de doc.DocumentElement si je l'ai ajouté à un autre XmlDocument après qu'un client l'ait demandé? Y a-t-il une meilleure manière de faire cela?

Merci!

+0

Une fonction WCF devrait également pouvoir renvoyer XMLDocument, pour autant que je sache. Avez-vous essayé [OperationContract] XmlDocument GetXml(); ? – InSane

+0

@In Sane - Merci pour votre commentaire. Oui, je l'ai configuré correctement avec [OperationContract] dans l'interface. Lorsque j'utilise XmlDocument, le client de test WCF ne parvient pas à charger avec le message "Impossible d'ajouter un service.Les métadonnées de service peuvent ne pas être accessibles.S'assurer que votre service s'exécute et expose les métadonnées.", Lorsque j'utilise XmlElement comme ci-dessus je ne peux pas tester la fonction, mais quand j'utilise String comme valeur de retour cela fonctionne :). Je suis très connu à la WCF, donc toute aide ou suggestion est appréciée! – Evan

Répondre

0

XmlDocument n'est pas décoré avec DataContractAttribute et je ne vois pas pourquoi l'objet doit être envoyé sur le réseau alors que le formulaire sérialisé (formulaire texte) est tout ce qui est requis.

Je concevoir comme:

[OperationContract] 
string GetFooXml(); 

et envoyer la chaîne. C'est ce que WCF/XML est pour, en envoyant des données sous forme de texte chaque fois que possible de sorte que plusieurs types de clients peuvent le consommer.

+0

Voulez-vous dire envoyer XML comme chaîne encodée? –

+0

Oui, à peu près. Il sera échappé quand il est envoyé, donc vous ne devriez pas avoir de problème. – Aliostad

Questions connexes