0

HttpWebRequest を使用してファイルを転送しています。ワークフローは次のようになります。

webRequest.BeginGetRequestStream(new AsyncCallback(WriteToStreamCallback), webRequest);

WriteStreamToCallback では:

HttpWebRequest webRequest = (HttpWebRequest)asynchronousResult.AsyncState;  
Stream requestStream = webRequest.EndGetRequestStream(asynchronousResult);  

バイトを requestStream に書き込み、次を呼び出します。

webRequest.BeginGetResponse(new AsyncCallback(ReadHttpResponseCallback), webRequest);  

ReadHttpResponseCallback で例外が発生します。

HttpWebRequest webRequest = (HttpWebRequest)asynchronousResult.AsyncState;  
// The next line throws a WebException
HttpWebResponse webResponse = (HttpWebResponse)webRequest.EndGetResponse(asynchronousResult);

例外は次のとおりです。

タイプ 'System.Net.WebException' の初回例外が System.Windows.dll で発生しまし
た リモート サーバーがエラーを返しました: NotFound.

アプリはこれから回復できますか? 原因は何ですか?断続的です。それはタイミングの問題ですか?
洞察をありがとう...

更新

private void ReadHttpResponseCallback(IAsyncResult asynchronousResult)
{
    try
    {
        HttpWebRequest webRequest = (HttpWebRequest) asynchronousResult.AsyncState;
        // The next line throws the exception
        HttpWebResponse webResponse = (HttpWebResponse) webRequest.EndGetResponse(asynchronousResult);

        /* SNIP */
    }
    catch (WebException webEx)
    {
        System.Diagnostics.Debug.WriteLine(string.Format("      {0} {1}", "ReadHttpResponseCallback - WebException", webEx.Message));
    }
    catch (Exception xx)
    {
        System.Diagnostics.Debug.WriteLine(string.Format("{0}  {1}", "ReadHttpResponseCallback", xx.Message));
    }
}
4

1 に答える 1

0

ここで解決策を見つけたかもしれません: http://fearthecowboy.com/2011/09/02/fixing-webrequests-desire-to-throw-exceptions-instead-of-returning-status/

于 2013-03-21T18:42:02.310 に答える