サーバー (サーバーはデバイス上にあり、インターウェブ上ではありません) > 4Gb からファイルをダウンロードしようとすると、転送は実際には (FileSize) % 4Gb のように見えるものだけを転送します。言い換えれば、4.5Gb をわずかに超えるファイルの場合、約 600MB のデータしか転送できません。
content-length ヘッダーなどと関係があると思いますが、正確なメカニズムが何であるかはわかりません。WebClient と WebRequest を使用してみましたが、どちらも同じ動作を示します。
どうすればこの制限を超えることができるか、誰にもわかりませんか? ここに私の現在のループがあります:
byte[] buffer = new byte[4096];
WebRequest request = WebRequest.Create(new Uri(transferDetails.URL));
using (WebResponse response = request.GetResponse())
{
using (Stream responseStream = response.GetResponseStream())
{
using (FileStream fileStream = new FileStream(actualPath, FileMode.Create, FileAccess.Write))
{
int count = 0;
do
{
// Read a block.
count = responseStream.Read(buffer, 0, buffer.Length);
// Write out to the local file.
if(count > 0)
{
fileStream.Write(buffer, 0, count);
}
} while (count != 0);
}
}
}