La lecture HttpRequest Corps dans le RESTE de la WCF
J'ai eu un REPOS de Service WCF en cours d'exécution .net 4 et j'ai testé le service web, il est de travail et d'accepter HttpRequest-je faire pour elle. Mais j'ai rencontré un problème en essayant d'accéder à la HttpRequest corps dans le service web. J'ai essayé d'envoyer aléatoire tailles de données ajoutées sur le HttpRequest en utilisant à la fois Violoniste et mon application WinForm et je n'arrive pas à trouver tous les objets dans runtime où je peux trouver mon corps de la requête est situé. Mon premier réflexe a été de regarder dans le HttpContext.Current.Request.InputStream
mais la longueur de ce bien est de 0, alors j'ai essayé de regarder dans IncomingWebRequestContext
cet objet n'a même pas une méthode ni les propriétés pour obtenir le corps de la HttpRequest.
Donc ma question est, est-il réellement un moyen d'accéder à la HttpRequest du corps de la requête dans WCF?
PS:
Les données à l'intérieur du corps de la requête est de chaînes JSON et pour la réponse, il serait de retour les données à l'intérieur de corps de la réponse JSON chaîne trop.
OriginalL'auteur madness800 | 2010-06-16
Vous devez vous connecter pour publier un commentaire.
Beaucoup plus simple, cette réponse sur WCF + REPOS: Où en est la demande de données? fonctionne très bien.
Aussi, si votre corps de la requête est deserializable, vous pouvez simplement passer une classe. À l'exception de quelques fautes de frappe, cela devrait fonctionner:
...
...
POST avec des données
{"Colour": "blue", "Size": 5}
à cette ressource doit retourner"It's a blue banana!"
.OriginalL'auteur skrebbel
Essayer avec
((System.ServiceModel.Channels.BufferedMessageData)(((System.ServiceModel.Channels.BufferedMessage)((OperationContext.Current.RequestContext).RequestMessage)).MessageData)).Buffer
elle est de type
System.ArraySegment<byte>
ou lire WCF + REPOS: Où en est la demande de données?
Je l'ai utilisé dans le débogueur (fenêtre d'observation) à l'intérieur de mon .Net Framework 4.0 WCF projet.
J'ai même allé et ajouter le Système.ServiceModel référence dans mon projet et je n'ai toujours pas de localiser l'BufferedMessageData objet à l'intérieur du Système.ServiceModel.Les canaux. J'ai aussi essayé de chercher dans l'explorateur d'Objets et aucune raison de revenir à tous.
Vous devriez la recherche dans la partie "non-public des membres" dans le débogueur. Si vous voulez écrire un code pour accéder aux données, vous devriez obtenir
System.ServiceModel.OperationContext.Current.RequestContext.RequestMessage
comme une instance deSystem.ServiceModel.Channels.Message
type, puis d'accéder à certains "non-public des membres de la" avec la manière décrite dans stackoverflow.com/questions/1850293/....OriginalL'auteur Oleg