2016-11-09 3 views
0

다음 코드를 사용하여 Dropbox에 파일을 업로드합니다.Dropbox.Api 대용량 파일을 업로드하지 못했습니다.

나는 nuget 패키지 Dropbox.Api을 사용하고 예외 System.Threading.Tasks.TaskCanceledException 받고 있습니다 ("A 작업이 취소되었다.")

을이 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

안녕 피터, 감사합니다. 그 일. 두 번째 줄에 다음 줄을 추가해야했습니다. config.HttpClient = new System.Net.Http.HttpClient(); HttpClient obj가 null이기 (위해) 때문에 – VivekDev

+0

Dropbox API의 모든 부분이 새 HttpClient를 생성하기위한 팩토리 메소드를 노출합니까? @VivekDev와 동일한 문제가 있었지만, Dropbox API가 객체 자체를 생성하기 위해 내부적으로 호출 할 수있는 다른 구성 단계가 없기 때문에 새로운 HttpClient()를 호출하는 것이 확실하지 않습니다. – Jono

+0

@Jono no factory 메서드, webClient를 구성에 제공하지 않으면 기본값이 사용됩니다. https://github.com/dropbox/dropbox-sdk-dotnet/blob/28233d643ddc65660c565d2c23bed46cdd6af84a/Dropbox.Api/DropboxRequestHandler.cs#L57 –