1

次のコード (ASP.Net 2.0 で実行) は、要求された URL の内容を2 回表示します。要求された URL のコンテンツを 1 回だけ表示したい。何が間違っているのかわかりません。要求された 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();
4

2 に答える 2

0

あなたのコードは良さそうなので、問題はないと思います...しかし、私が提案するのは次のとおりです。

1) エラーは URL の反対側にある可能性があります。Google にアクセスして、返されたコンテンツが適切かどうかを確認してください。

2) 「responseReader.ReadToEnd()」の場所にブレークポイントを置き、そこから出てくるものが良いかどうかを確認します。

3) 上記のコードが ASPX ページにある場合...「Response.End();」を呼び出すようにしていますか? コードの最後の行の後ですか?(「resposne.close()」ではなく「Response.End()」)。

于 2008-10-24T10:12:32.937 に答える
0

問題が見つかりました。上記のコードではまったくありませんが、ページが呼び出されています。私が呼び出していたページは、Page_OnInit メソッドに "MyBase.OnLoad(e)" という行が含まれているクラスから継承されていたため、Page_OnLoad メソッドが 2 回実行されました。明らかに、代わりに MyBase.OnInit(e) に​​する必要がありました。ページを直接テストしたときに、ページを直接テストすることを妨げていた他のコードのために、クラスから継承を一時的に削除する必要があったため、キャッチしませんでした。

「劣等生」の帽子をかぶって、タイムアウトのために隅に退却します。とにかく助けてくれてありがとう。

于 2008-10-24T14:36:57.243 に答える