2

リクエストを中止すると、WebException が発生します。リクエストが中止されたかどうかを確認するにはどうすればよいですか?

// if (asynchronousResult.AsyncState !="Aborted" ) {
            HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);//WebException if aborted
            Stream streamResponse = response.GetResponseStream();
            StreamReader streamRead = new StreamReader(streamResponse);
            do_after(streamRead.ReadToEnd());
            streamResponse.Close();
            streamRead.Close();
            response.Close();
    //    }
4

2 に答える 2

4
try
{
    HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);//WebException if aborted
}
catch(WebException e)
{
  if(e.Status == WebExceptionStatus.RequestCanceled)
    {
      //WORK
    }
}

ドキュメントから:

このAbortメソッドは、リソースへの要求をキャンセルします。リクエストがキャンセルされた後、、、、、またはメソッドを呼び出すBeginGetResponseEndGetResponse、プロパティがに設定されたが発生します。BeginGetRequestStreamEndGetRequestStreamWebExceptionStatusRequestCanceled

ソース: http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.abort( v = VS.95

于 2011-08-15T23:48:25.297 に答える
1

EndGetResponse を try-catch ブロックでラップする必要があります。Web リクエストが中止された場合、予期しないフローに直面していることになるため、これを処理するには例外を使用するのが最善の方法です。

于 2011-08-15T23:44:53.557 に答える