Почему я получаю & # 8220; двойной ответ & # 8221; из HttpWebResponse?

StackOverflow https://stackoverflow.com/questions/231848

Вопрос

Следующий код (работает в ASP.Net 2.0) отображает содержимое запрошенного URL-адреса дважды . Я хочу, чтобы он отображал содержимое запрошенного URL только один раз. Я не могу понять, что я делаю неправильно. Запрашиваемый URL-адрес возвращает XML, и если я посещаю его напрямую, он работает нормально.

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();
Это было полезно?

Решение 3

Я нашел проблему. Это вовсе не с приведенным выше кодом, а с вызываемой страницей. Страница, которую я вызывал, была унаследована от класса, чей метод Page_OnInit содержал следующую строку: «MyBase.OnLoad (e)», в результате чего метод Page_OnLoad выполнялся дважды. Очевидно, это должен был быть MyBase.OnInit (e). Я не уловил его, потому что когда я тестировал страницу напрямую, мне пришлось временно удалить наследование из класса из-за какого-то другого кода, который не позволил бы мне тестировать страницу напрямую.

Теперь я надену "Dunce". шляпу и отступить на угол на время. В любом случае спасибо за помощь.

Другие советы

Откуда этот код запускается? Это может быть совершенно неважно, но вы видели эту статью?

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

Ваш код выглядит хорошо, поэтому я не думаю, что проблема в этом ... но я хотел бы предложить следующее:

1) Возможно, ошибка находится на другом конце URL-адреса ... поэтому попробуйте нажать Google и посмотреть, является ли возвращенный контент хорошим или нет.

2) Установите точку останова в " responseReader.ReadToEnd () " спот и посмотри, хорошо ли выходит из этого.

3) Если этот код выше находится на странице ASPX ... вы обязательно вызываете " Response.End (); " после последней строки кода? (не "resposne.close ()", а "Response.End ()").

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top