0

現在、ASP.netページからWebサービスを呼び出しています。特定のアクションを要求するためにRESTベースのWebサービスを呼び出そうとすると、404が返されます(これは私のアプリケーションの特定のエラーを表します)。エラーをキャッチしようとしましたが、404が返されると、代わりにアプリケーションがハングし続け、次のエラーをキャッチすることになります。

[System.Net.WebException] = {"基になる接続が閉じられました:受信時に予期しないエラーが発生しました。"}

Webサービスが404で応答した後、2秒間で別のエラーが発生するのはなぜですか?

try
{
    newPassword = Customer.ResetPassword(_transaction.Centre.Id, newPassword);
}
catch(WebException ex)
{
    HttpWebResponse response = (HttpWebResponse)ex.Response;

    if ((response != null) && (response.StatusCode == HttpStatusCode.NotFound))
    {
        //then the email address doesnt exist
        ErrorPage(104);
    }
    else
    {
         ErrorPage();
    }
 }
 catch (Exception ex)
 {
    ErrorPage();
 }

そしてそれはこれを呼びます:

Request currentRequest = new Request(uri,
            Communication.Request.HttpRequestType.POST,[hidden][hidden]);

Response response = currentRequest.Send(Serializer.Serialize<ResetPassword (resetPassword));

return Serializer.Deserialize<ResetPassword>(response.BodyData);

[非表示]タグは無視してください。私はそれを公の場から隠さなければなりませんでした。しかし、それがお役に立てば幸いです。

よろしくお願いします!

4

1 に答える 1

2

システムに関する情報をほとんど提供していないため、次のようになります。

あなたはおそらくあなたのウェブサービスの呼び出しを次のようなもので早期に終了しています

HttpContext.Current.Response.End()

Webサービスコード(.NET内)はおそらくリクエストを完了しようとしていますが、接続を早期に閉じました。これは同様に発生しResponse.Redirect()ますが、ユーザーへの出力がすでに完了しているため、Web側に表示されることはありません。404とは関係ありません。WebサービスコードはスローしWebExceptionますが、出力を処理/フォーマットするものはありません。


アップデート

あなたのフィードバックに基づいて、私はあなたの問題がおそらく次のいずれかであると推測することしかできません:

  1. Webサービスに送信されるデータ
  2. Webサービスがデータを処理する方法

Fiddler2をダウンロードし、Webサービスへのhttpリクエストをスニッフィングして、実際にネットワーク上で何が行われているのかを確認する必要があります。すべてがチェックアウトされた場合、私が考えることができるのは2つだけです。

  1. あなたのRequest/についての何かResponseが正しくありません。代わりに、またはをWebClient呼び出してデータをWebサービスに送信することができます。UploadData(...)UploadString(...)
  2. Webサービスに問題があり、クライアントが期待する方法で応答を終了する前に接続を閉じます。

WebException:基になる接続が閉じられました:受信時に予期しないエラーが発生しました。クライアントがデータ(ヘッダーの後の本文など)を受信することを期待しているが、サーバーが応答を早期に終了した場合にのみ発生するはずです。

于 2011-08-04T15:54:08.597 に答える