Domanda

Il seguente codice (in esecuzione in ASP.Net 2.0) mostra i contenuti dell'URL richiesto due volte . Voglio solo che visualizzi il contenuto dell'URL richiesto una volta sola. Non riesco a capire cosa sto facendo di sbagliato. L'URL richiesto sta restituendo XML e se visito l'URL direttamente, funziona bene.

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();
È stato utile?

Soluzione 3

Ho trovato il problema. Non è affatto con il codice sopra, ma con la pagina chiamata. La pagina che stavo chiamando era ereditata da una classe il cui metodo Page_OnInit conteneva la seguente riga: " MyBase.OnLoad (e) " ;, che ha causato l'esecuzione del metodo Page_OnLoad due volte. Ovviamente, avrebbe dovuto essere MyBase.OnInit (e) invece. Non l'ho preso perché quando ho testato direttamente la pagina ho dovuto rimuovere temporaneamente l'eredità dalla classe a causa di qualche altro codice che mi avrebbe impedito di testare direttamente la pagina.

Ora inserirò il mio " Dunce " cappello e ritirarsi in un angolo per una pausa. Grazie comunque per l'aiuto.

Altri suggerimenti

Da dove viene eseguito quel codice? Questo potrebbe essere del tutto irrilevante ma hai visto questo articolo ...?

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

Il tuo codice sembra buono, quindi non credo che il problema sia presente ... ma quello che suggerirei è il seguente:

1) Forse l'errore si trova sull'altra estremità dell'URL ... quindi prova a colpire Google e vedi se il contenuto restituito è buono o meno.

2) Inserisci un punto di interruzione in " responseReader.ReadToEnd () " e vedi se ciò che esce da lì è buono.

3) Se questo codice sopra si trova in una pagina ASPX ... stai assicurando di chiamare " Response.End (); " dopo che sei l'ultima riga di codice? (non " resposne.close () " ;, ma " Response.End () ").

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top