“二重回答” HttpWebResponseから?
-
04-07-2019 - |
質問
フォローコード(ASP.Net 2.0で実行)は、要求されたURLのコンテンツを 2回表示します。要求された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メソッドが2回実行されました。明らかに、代わりにMyBase.OnInit(e)になっているはずです。ページを直接テストしたときに、ページを直接テストできなかった他のコードのために、クラスから継承を一時的に削除しなければならなかったため、私はそれをキャッチしませんでした。
今、「ダンセ」をつけます。帽子をかぶって、タイムアウトまでコーナーに退きます。とにかく助けてくれてありがとう。
他のヒント
そのコードはどこから実行されますか?これは完全に無関係かもしれませんが、この記事を見たことがありますか?。
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()")。