La lecture du contenu XML à partir du Corps de WebAPI appel est coupé au début
Je suis de créer une sorte de proxy de service qui doit traiter les appels contenant des données XML à partir du corps d'un POST
à mon WebAPI service, puis POST
à un autre service.
Ce qui est bizarre c'est quand je reçois le message XML à partir de la POST
la 1er partie du XML à partir du corps est coupé. Au départ, j'ai pensé que peut-être la taille de la mémoire tampon, ou le message était trop grand donc j'ai coupé beaucoup de test au format XML message en cours d'envoi de réduire ce qui a été envoyé. Cependant, le XML est encore coupés dans le même endroit.
J'ai essayé ce qui suit, (2) des méthodes pour lire le fichier XML CORPS dans la WebAPI service et le résultat est le même:
var reader = new StreamReader(Request.Content.ReadAsStreamAsync().Result);
string originalMessage = reader.ReadToEnd();
et:
var result = "";
Request.Content.ReadAsStreamAsync().ContinueWith(x =>
{
using (var sr = new StreamReader(x.Result))
{
result = sr.ReadToEnd();
}
});
Ici est un extrait de l'original XML:
<Message version="123" release="001" xmlns="http://www.mysite.com/schema">
<Header>
<To Att1="A">001</To>
<From Att2="B">002</From>
<ID>9876</ID>
Ici est la début du contenu après l'avoir lu dans le WebAPI contrôleur POST
:
</To>
<From Att2="B">002</From>
<ID>9876</ID>
Voir comment il commence à la "fermeture" de la balise de la <To>
élément? Ça n'est évidemment pas le début du XML qu'il a été envoyé.
Encore plus étrange est le "Contenu" Taille lors de l'inspection avant de l'envoyer et après est 4188 sur les deux côtés. Autre chose intéressante, c'est que j'ai un vieux de la mode .asmx
testeur (par opposition à une API Web service) qui ne l'identique chose. Quand j'ai lu le message entrant XML dans l'application en utilisant les éléments suivants:
//Get raw request body
Stream receiveStream = HttpContext.Current.Request.InputStream;
//Move to beginning of input stream and read
receiveStream.Position = 0;
using (StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8))
{
//Load into XML document
xmlSoapRequest.Load(readStream);
}
...Je vois le plein message XML. Donc pas pourquoi la .asmx
peut lire, mais pas la WebAPI service entièrement.
Ce que je fais mal à mon WebAPI POST
appel à l'endroit où je ne peux pas voir l'intégralité du message XML qui a été envoyé dans le corps de la demande?
Vous devez vous connecter pour publier un commentaire.
Bien j'ai compris la question, mais pas sûr à 100% sur le raison. Le paramètre j'ai été de les utiliser pour la
POST
était le seul droit de la boîte:Je l'ai changé pour prendre la demande en tant que paramètre dans le
POST
à la place:Quand j'ai fait la 2ème option ci-dessus, j'ai commencé à l'ensemble du corps XML de la demande comme prévu.