2010-10-13 5 views
1

J'ai code quelque chose comme ce qui suit:Comment puis-je revenir résultat dos nu au client WCF

<OperationContract()> 
<Description("")> 
<WebGet(Bodystyle:=WebMessageBodyStyle.Bare, UriTemplate:="TestConnection")> 
Function TestConnection() As String 


Public Function TestConnection() As String Implements ITestSvc.TestConnection 
    WebOperationContext.Current.OutgoingResponse.ContentType = "text/plain" 
    Return "Connection Success" 
End Function 

Mais il retourne est <string xmlns='...'>Connection Success</string>

Comment puis-je avoir seulement « Le succès de connexion » à retourner sans Wrapper XML Je sais que nous pouvons faire quelque chose avec MessageEncoder. Mais, je veux qu'il soit disponible au niveau de l'opération (certaines opérations nécessitent des enveloppeurs XML/JSON et certaines opérations ne le font pas).

Quelqu'un peut-il m'aider à ce sujet?

Répondre

10

est ici la solution la plus simple pour retourner le texte brut. Définissez le format de réponse à xml et définissez la réponse sortante à text/html. Devrait faire l'affaire.

[WebGet(ResponseFormat = WebMessageFormat.Xml)] 
public string DoWork() 
{ 

    WebOperationContext.Current.OutgoingResponse.ContentType = "text/html"; 
    return "THIS IS PLAIN TEXT"; 
} 
2

Il y a une façon d'y parvenir si vous avez affaire à HTTP, ce n'est pas vraiment sympa, mais je pensais pouvoir le mentionner.

Vous pouvez définir le type de retour de votre méthode pour annuler et simplement afficher votre chaîne brute directement dans la réponse.

[OperationContract] 
[WebGet(UriTemplate = "foo")] 
void Foo() 
{ 
    HttpContext.Current.Response.Write("bar"); 
} 
+0

c'est bon, ça m'a aidé alors que les autres pas, merci – smoothumut