2008-10-23 77 views
1

以下代码(在ASP.Net 2.0中运行)显示请求的URL 两次的内容。我只希望它显示一次所请求的URL的内容。我无法弄清楚我做错了什么。请求的URL是返回XML,如果我直接访问URL,它可以正常工作。为什么我从HttpWebResponse获得“双重响应”?

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

我发现了这个问题。这完全不是上面的代码,而是被调用的页面。我调用的页面是从其Page_OnInit方法包含以下行的类继承的:“MyBase.OnLoad(e)”,它导致Page_OnLoad方法被执行两次。显然,它应该是MyBase.OnInit(e)。我没有捕获它,因为当我直接测试页面时,我不得不暂时从类中去除继承,因为其他一些代码会阻止我直接测试页面。

我现在将穿上我的“邓斯”帽子,并撤退到角落。无论如何,感谢您的帮助。

0

你的代码看起来很好,所以我不认为这个问题是存在的......但我的建议如下:

1)也许是错误的URL的其他结束...所以请尝试点击Google,查看返回的内容是否良好。

2)在“responseReader.ReadToEnd()”处放置一个断点,看看是否有什么出来。 3)如果上面的代码在一个ASPX页面中...你是否确定调用“Response.End();”你是最后一行代码之后? (不是“resposne.close()”,而是“Response.End()”)。

相关问题