WCF ResponseFormat Pour WebGet
WCF offre deux options pour ResponseFormat attribut dans WebGet annotation dans ServiceContract.
[ServiceContract]
public interface IService1
{
[OperationContract]
[WebGet(UriTemplate = "greet/{value}", BodyStyle = WebMessageBodyStyle.Bare)]
string GetData(string value);
[OperationContract]
[WebGet(UriTemplate = "foo", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
string Foo();
Les options pour ResponseFormat sont WebMessageFormat.Json et WebMessageFormat.Xml. Est-il possible d'écrire mon propre site web de format de message? Je voudrais que lorsque le client appelle foo() la méthode qu'il obtient chaîne brute - sans json ou xml wrappers.
Vous devez vous connecter pour publier un commentaire.
WebGetAttribute
est fourni par Microsoft, et je ne pense pas que vous pouvez étendreWebMessageFormat
. Cependant, vous pourriez probablement prolonger laWebHttpBinding
qui utiliseWebGetAttribute
. Vous pouvez ajouter votre propre attribut commeEn général, la personnalisation de la mise en page du message dans WCF est appelé message personnalisé codeur/encodage. Microsoft fournit un exemple: Message Personnalisé Encodeur: La Compression De L'Encodeur. Aussi une autre commune de l'extension des gens faire est d'étendre le comportement d'ajouter une gestion d'erreur personnalisée, de sorte que vous pourriez chercher un exemple dans ce sens.
Essayez d'utiliser
Ensuite de retour à un Système.IO.Flux à partir de votre fonction.
Voici un code que j'utilise pour renvoyer une image à partir d'une base de données, mais accessible par l'URL:
Mise en œuvre:
Dans votre cas, de retour d'une crue de chaîne, régler le ContentType à quelque chose comme "text/plain" et le retour de vos données sous forme d'un flux. Au jugé, quelque chose comme ceci:
J'ai mis en place cet attribut comme ça, peut-être que ça va aider quelqu'un dans le futur:
Il y a une façon d'y arriver si vous faites affaire avec HTTP, ce n'est pas exactement agréable, mais j'ai pensé que je pourrais mentionner.
Vous pouvez définir le type de retour de votre méthode d'annuler et juste à la sortie de votre chaîne brute directement dans la réponse.