以下代码(在ASP.Net 2.0中运行)显示请求的网址两次的内容。我只希望它一次显示请求的URL的内容。我无法弄清楚我做错了什么。请求的URL返回XML,如果我直接访问URL,它可以正常工作。
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();
答案 0 :(得分:0)
从哪个代码运行?这可能完全无关紧要,但你看过这篇文章了吗?
http://ddkonline.blogspot.com/2008/02/aspnet-double-postback-bug-strikes.html
答案 1 :(得分:0)
您的代码看起来不错,所以我认为问题不存在......但我建议如下:
1)也许错误发生在网址的另一端......所以请尝试点击Google,看看返回的内容是否合适。
2)在“responseReader.ReadToEnd()”点放置一个断点,看看那里出现的是好的。
3)如果上面的代码在ASPX页面中......你确定要调用“Response.End();”在你的最后一行代码之后? (不是“resposne.close()”,而是“Response.End()”)。
答案 2 :(得分:0)
我发现了问题。它根本不是上面的代码,而是调用页面。我调用的页面继承自一个类,其Page_OnInit方法包含以下行:“MyBase.OnLoad(e)”,它导致Page_OnLoad方法执行两次。显然,应该是MyBase.OnInit(e)。我没有抓住它,因为当我直接测试页面时,我不得不暂时从类中删除继承,因为其他一些代码会阻止我直接测试页面。
我现在戴上我的“笨蛋”帽子,然后退去角落一段时间。无论如何,谢谢你的帮助。