質問

フォローコード(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()")。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top