Pregunta

El código de seguimiento (que se ejecuta en ASP.Net 2.0) muestra el contenido de la URL solicitada dos veces . Solo quiero que muestre el contenido de la URL solicitada una vez. No puedo entender lo que estoy haciendo mal. La URL solicitada está devolviendo XML y si la visito directamente, funciona bien.

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();
¿Fue útil?

Solución 3

Encontré el problema. No es con el código anterior en absoluto, pero con la página que se llama. La página a la que llamaba fue heredada de una clase cuyo método Page_OnInit contenía la siguiente línea: " MyBase.OnLoad (e) " ;, que hizo que el método Page_OnLoad se ejecutara dos veces. Obviamente, debería haber sido MyBase.OnInit (e) en su lugar. No lo detecté porque cuando probé la página directamente tuve que eliminar temporalmente la herencia de la clase debido a algún otro código que me hubiera impedido probar la página directamente.

Ahora pondré mi " Dunce " Sombrero y retirarse a la esquina por un tiempo fuera. Gracias de todos modos por la ayuda.

Otros consejos

¿Desde dónde se ejecuta ese código? Esto puede ser completamente irrelevante, pero ¿has visto este artículo ...?

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

Tu código se ve bien, así que no creo que el problema esté ahí ... pero lo que sugeriría es lo siguiente:

1) Tal vez el error esté en el otro extremo de la URL ... así que intenta golpear Google y ver si el contenido devuelto es bueno o no.

2) Coloque un punto de interrupción en el " responseReader.ReadToEnd () " Spot, y ver si lo que sale de allí es bueno.

3) Si este código de arriba está en una página ASPX ... ¿se está asegurando de llamar a " Response.End (); " ¿Después de que eres la última línea de código? (no " resposne.close () " ;, sino " Response.End () ").

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top