2016-11-09 9 views
0

次のコードを使用してDropboxにファイルをアップロードしています。Dropbox.Apiが大きなファイルをアップロードできません

私はnugetパッケージDropbox.Apiを使用して、例外System.Threading.Tasks.TaskCanceledException取得しています(「タスクが取り消されたの。」)

をこのSO Questionから、タイムアウトの問題であるように思われます。

どのようにタイムアウトを設定するには、次のコードを変更しますか。

public async Task<FileMetadata> UploadFileToDropBox(string fileToUpload, string folder) 
    { 
     DropboxClient client = new DropboxClient(GetAccessToken()); 

     using (var mem = new MemoryStream(File.ReadAllBytes(fileToUpload))) 
     { 
      string filename = Path.GetFileName(fileToUpload); 

      try 
      { 
       string megapath = GetFullFolderPath(folder); 
       string megapathWithFile = Path.Combine(megapath, Path.GetFileName(Path.GetFileName(filename))).Replace("\\", "/"); 
       var updated = client.Files.UploadAsync(megapathWithFile, WriteMode.Overwrite.Instance, body: mem); 
       await updated; 
       return updated.Result; 
      } 
      catch (Exception ex) 
      { 
       return null; 
      } 
     } 
    } 

答えて

5

次のようにクライアントを作成し、初期化してみてください。

var config = new DropboxClientConfig(); 
config.HttpClient.Timeout = new TimeSpan(hr, min, sec); // choose values 
var client = DropboxClient(GetAccessToken(), config); 

参考:
http://dropbox.github.io/dropbox-sdk-dotnet/html/M_Dropbox_Api_DropboxClient__ctor_1.htm

+2

こんにちはピーター、ありがとうございました。その働き。次の行を2行目のconfig.HttpClient = new System.Net.Http.HttpClient()に追加する必要がありました。 HttpClient objがnullであるため – VivekDev

+0

Dropbox APIのどの部分でも、新しいHttpClientを構築するためのファクトリメソッドが公開されていますか?私は@VivekDevと同じ問題を抱えていましたが、新しいHttpClient()を呼び出すとDropbox APIがオブジェクト自体を作成する場合に内部的に呼び出すかもしれないいくつかの他の設定ステップが見当たらないことは不明です。 – Jono

+0

@Jono no factoryメソッド、webClientをconfigに指定しない場合、デフォルトのものが使用されます。https://github.com/dropbox/dropbox-sdk-dotnet/blob/28233d643ddc65660c565d2c23bed46cdd6af84a/Dropbox.Api/DropboxRequestHandler.cs#L57 –

関連する問題