4

fileStream.Read呼び出しを実行すると、「ストリームが破棄されました」というメッセージが表示され、コードが例外をキャストする理由の答えを誰かが知っているかどうか疑問に思いました。

フォルダ内のファイルを一覧表示でき、ブラウザを使用してfileUrlが正常に機能します。プロキシは含まれません。UnifiedFileは、私が使用しているCMSに由来するVirtualFileのサブクラスにすぎません。(ダウンロードしようとしている画像です)

FtpWebRequest fileRequest = (FtpWebRequest)FtpWebRequest.Create(fileUrl);
fileRequest.Method = WebRequestMethods.Ftp.DownloadFile;
fileRequest.Credentials = credentials;
fileRequest.EnableSsl = this.EnableSsl;
fileRequest.UseBinary = true;
fileRequest.UsePassive = true;
fileRequest.KeepAlive = true;
fileRequest.Proxy = null;

using (FtpWebResponse fileResponse = (FtpWebResponse)fileRequest.GetResponse())
{
    using (Stream fileStream = response.GetResponseStream())
    {
        UnifiedFile createdFile = PictureManager.Instance.CreateOriginalFile(name);
        using (Stream targetStream = createdFile.Open(FileMode.OpenOrCreate))
        {
             byte[] buffer = new byte[2048];

             // Read the file
             while (true)
             {
                int bytesRead = fileStream.Read(buffer, 0, buffer.Length);
                // Reached end of stream, close
                if (bytesRead == 0)
                  break;

                targetStream.Write(buffer, 0, bytesRead);
              }

         }
   }

}

編集:バグを見つけました。「GetResponseStream」は前のリクエストに対して実行されるため、間違ったリクエストになります。ドー

「おばあちゃんの助け」をみんなに感謝します;-)(スウェーデン語の表現なので、それが本当に英語に当てはまるかどうかはわかりません)

4

1 に答える 1

3

StatusCode続行する前に、応答を確認する必要があります。リクエストが失敗したので、レスポンスボディがないのではないかと思います。

于 2009-10-13T12:14:17.363 に答える