2

行を含むfinallyブロックで例外がスローされますresponse.Close();

try
{
    response = (FtpWebResponse)request.GetResponse();
}
catch (System.Net.WebException webEx)
{
    FtpWebResponse ftpResponse = (FtpWebResponse)webEx.Response;

    if (ftpResponse.StatusCode == FtpStatusCode.ActionNotTakenFileUnavailable)
    {
        return false;
    }

    throw;
}
finally
{
    if (response != null)
    {
        response.Close();
    }
}

スタックトレースは次のとおりです。

   at System.Net.FtpWebRequest.SyncRequestCallback(Object obj)
   at System.Net.FtpWebRequest.RequestCallback(Object obj)
   at System.Net.CommandStream.Dispose(Boolean disposing)
   at System.IO.Stream.Close()
   at System.IO.Stream.Dispose()
   at System.Net.ConnectionPool.Destroy(PooledStream pooledStream)
   at System.Net.ConnectionPool.PutConnection(PooledStream pooledStream, Object owningObject, Int32 creationTimeout, Boolean canReuse)
   at System.Net.FtpWebRequest.FinishRequestStage(RequestStage stage)
   at System.Net.FtpWebRequest.SyncRequestCallback(Object obj)
   at System.Net.FtpWebRequest.RequestCallback(Object obj)
   at System.Net.CommandStream.Abort(Exception e)
   at System.Net.CommandStream.CheckContinuePipeline()
   at System.Net.FtpWebRequest.DataStreamClosed(CloseExState closeState)
   at System.Net.FtpDataStream.System.Net.ICloseEx.CloseEx(CloseExState closeState)
   at System.Net.FtpDataStream.Dispose(Boolean disposing)
   at System.IO.Stream.Close()
   at System.Net.FtpWebResponse.Close()
   at FVC.RequestForStock.Application.RequestForStockDataImportProvider.VerifyDirectoryExist(String serverAddress, String userName, SecureString password) in C:\CoName.RFS.Application\RFSDataImportProvider.cs:line 122

そして最後に、デバッグインスペクターが表示するもの

ここに画像の説明を入力

(テキストを確認できない場合は、画像を拡大してください。たとえば、Firefox では ctrl を押しながらマウス ホイールを上に回します) 例外が発生する理由と、それを回避する方法を特定するのを手伝ってください。 編集: Microsoft.NET フレームワークの v4.0 を使用する

4

1 に答える 1

0

ストリームがまだ読み取り可能かどうかも確認します。

       finally
        {
            if (response != null && 
                 response.GetResponseStream()!=null && 
                 response.GetResponseStream().CanRead)
                {
                    response.Close();
                }
            }
于 2012-08-23T05:57:57.090 に答える