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?

InformationsquelleAutor atconway | 2013-11-11