以下代码(在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();
有帮助吗?

解决方案 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)也许错误发生在网址的另一端......所以请尝试点击Google,看看返回的内容是否合适。

2)在“responseReader.ReadToEnd()”处放置一个断点。现场,看看那里出现的是好事。

3)如果上面的代码在ASPX页面中...你确定要调用“Response.End();”在你的最后一行代码之后? (不是“resposne.close()”,而是“Response.End()”)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top