Question

Le code suivant (exécuté en ASP.Net 2.0) affiche le contenu de l'URL demandée deux fois . Je veux seulement qu'il affiche le contenu de l'URL demandée une fois. Je ne peux pas comprendre ce que je fais mal. L'URL demandée renvoie XML et si je visite directement l'URL, cela fonctionne correctement.

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
byte[] postDataBytes = Encoding.UTF8.GetBytes(postData);
request.Method = "POST";
request.ContentType = "application/xml";
request.ContentLength = postDataBytes.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(postDataBytes, 0, postDataBytes.Length);
requestStream.Close();

// get response and write to console
response = (HttpWebResponse) request.GetResponse();
StreamReader responseReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8);
try {
   Response.Write(responseReader.ReadToEnd());
}
finally {
   responseReader.Close();
}
response.Close();
Était-ce utile?

La solution 3

J'ai trouvé le problème. Ce n'est pas du tout avec le code ci-dessus, mais avec la page appelée. La page que j'appelais était héritée d'une classe dont la méthode Page_OnInit contenait la ligne suivante: "MyBase.OnLoad (e)", ce qui a entraîné l'exécution de la méthode Page_OnLoad à deux reprises. Évidemment, cela aurait dû être MyBase.OnInit (e) à la place. Je ne l’ai pas compris, car lorsque j’ai testé la page directement, j’ai dû supprimer temporairement l’héritage de la classe à cause d’un autre code qui m’aurait empêché de tester directement la page.

Je vais maintenant mettre mon " Dunce " chapeau et se retirer dans le coin pour une pause. Merci quand même pour l'aide.

Autres conseils

D'où provient ce code? Cela pourrait être complètement hors de propos, mais avez-vous vu cet article ..?

http://ddkonline.blogspot.com /2008/02/aspnet-double-postback-bug-strikes.html

Votre code a l'air bien, donc je ne pense pas que le problème est là ... mais voici ce que je suggérerais:

1) Peut-être que l'erreur se situe à l'autre extrémité de l'URL ... essayez donc d'appuyer sur Google pour voir si le contenu renvoyé est correct ou non.

2) Placez un point d'arrêt sur le paramètre "responseReader.ReadToEnd ()". repérer et voir si ce qui sort de là est bon.

3) Si le code ci-dessus se trouve dans une page ASPX ... assurez-vous d'appeler "Response.End ();" après votre dernière ligne de code? (pas "resposne.close ()", mais "Response.End ()").

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top