2017-03-06 4 views
1

以下のコードからエラーが発生しています。 エラー416要求範囲不満私のカスタムダウンロードファイルメソッド。 私のファイルは2つのpdfを持つzipファイルです。このコードはその特定のファイルのみを破壊しています。私は1つのファイルが私にこのエラーを与えている55のファイルを持っています。 Azureウェブサイトディレクトリにファイルがアップロード/ダウンロードされています。エラー416リクエストされた範囲がCで満足できない#

そのファイルの以下のプロパティウィンドウを参照してください:

enter image description here

これは私のコードです:

try 
{ 
    var packageId = updates[0]; 
    var packagePath = updates[1]; 
    var packageNameAvailable = Path.GetFileName(updates[1]); 
    log.Info($"Package id {packageId} | {packageNameAvailable} is available to download. "); 
    DownloadPackagePath = string.Format(@"{0}\{1}", ApiConfigHelper.PackageRootDirectory, packageNameAvailable); 
    var url = new Uri(updates[1]); 
    **DownloadFile(url.OriginalString, DownloadPackagePath);** // problem here 
    result = true; 
} 
catch (Exception ex) 
{ 
    log.Info("Error occurred while downloading package, stopping download. Cleaning up resources. "); 
    log.Error($"Error:{ex.Message}", ex); 
    log.Info("Cleaning up started...."); 
    result = false; 
} 

DownloadFile方法:

private void DownloadFile(string sourceURL, string destinationPath) 
    { 
     long fileSize = 0; 
     int bufferSize = 1024; 
     bufferSize *= 1000; 
     long existLen = 0; 
     FileStream saveFileStream = null; 
     Stream resStream = null; 
     try 
     { 
      log.Info("Download started...."); 

      if (File.Exists(destinationPath)) 
      { 
       FileInfo destinationFileInfo = new FileInfo(destinationPath); 
       existLen = destinationFileInfo.Length; 
       log.Info($"Resuming partial downloaded file from {existLen/1024} kB started...."); 
      } 

      if (existLen > 0) 
      { 
       saveFileStream = new FileStream(destinationPath, FileMode.Append, FileAccess.Write, FileShare.ReadWrite); 
      } 
      else 
      { 
       saveFileStream = new FileStream(destinationPath, FileMode.Create, FileAccess.Write, FileShare.ReadWrite); 
       FileInfo destinationFileInfo = new FileInfo(destinationPath); 
       log.Info($"Starting download FileName:{destinationFileInfo.Name} Size: {destinationFileInfo.Length/1024} kB ...."); 
      } 

      var httpRequest = (HttpWebRequest)WebRequest.Create(sourceURL); 
      httpRequest.AddRange((int)existLen); 
      var httpResponse = (HttpWebResponse)httpRequest.GetResponse(); 
      resStream = httpResponse.GetResponseStream(); 
      fileSize = httpResponse.ContentLength; 
      int byteSize; 
      byte[] downBuffer = new byte[bufferSize]; 

      while ((byteSize = resStream.Read(downBuffer, 0, downBuffer.Length)) > 0) 
      { 
       saveFileStream.Write(downBuffer, 0, byteSize); 
      } 
      log.Info("File downloaded successfully. Clean up started...."); 

     } 
     catch 
     { 
      throw; 

     } 
     finally 
     { 
      log.Info("Cleaning up unused streams...."); 
      if (saveFileStream != null) 
      { 
       saveFileStream.Close(); 
       saveFileStream.Dispose(); 

      } 
      if (resStream != null) 
      { 
       resStream.Close(); 
       resStream.Dispose(); 
      } 
      log.Info("DONE!!!"); 

     } 
    } 

あなたが助けてもらえ私を識別するg this.Myログには、 というエントリがあります.2494 KBから部分的にダウンロードされたファイルを再開しました....それだけに固執しています。 2494キロバイトから部分的にダウンロードしたファイルを再開

答えて

0

は、ログ情報に基づいて

を開始し、要求の範囲は、* 1024 2494(2553856)からスタートです。 2,553,856バイトがファイルプロパティウィンドウから見えるファイルサイズ(2,492,548)よりも大きい。要求されたファイルの範囲が存在しないため、416(Requested Range Not Satisfiable)エラーが発生します。

存在するファイルが存在する可能性があります。ダウンロードしたいzipファイルと同じ名前です。同じフォルダー内の既存のファイルを削除しようとすると、この問題が解決されます。

関連する問題