2017-01-11 10 views
1

Droboxにファイルをアップロードし、これらのファイルへの共有リンクを返す次の機能があります。Dropboxにアップロードできません。.NET SDK

private async Task<string> Upload(DropboxClient dbx, string localPath, string remotePath) 
    { 
     const int ChunkSize = 4096 * 1024; 
     using (var fileStream = File.Open(localPath, FileMode.Open)) 
     { 
      if (fileStream.Length <= ChunkSize) 
      { 
       WriteMode mode = new WriteMode(); 

       FileMetadata fileMetadata = await dbx.Files.UploadAsync(remotePath, body: fileStream, mode: mode.AsAdd, autorename: true); 
       //set the expiry date 
       var existingDoc = await dbx.Files.GetMetadataAsync(remotePath); 
       if (existingDoc.IsFile) 
       { 
        var sharedLink = dbx.Sharing.ListSharedLinksAsync(remotePath); 
        var settings = new ListSharedLinksArg(remotePath); 
        ListSharedLinksResult listSharedLinksResult = await dbx.Sharing.ListSharedLinksAsync(remotePath); 
        if (listSharedLinksResult.Links.Count > 0) 
        { 
         return listSharedLinksResult.Links[0].Url; 
        } 
        else 
        { 
         var settings2 = new SharedLinkSettings(expires: DateTime.Today.AddDays(7)); 
         SharedLinkMetadata sharedLinkMetadata = await dbx.Sharing.CreateSharedLinkWithSettingsAsync(remotePath, settings2); 
         return sharedLinkMetadata.Url; 
        } 
       } 
       else 
       { 
        var settings = new SharedLinkSettings(expires: DateTime.Today.AddDays(7)); 
        SharedLinkMetadata sharedLinkMetadata = await dbx.Sharing.CreateSharedLinkWithSettingsAsync(fileMetadata.PathLower, settings); 
        return sharedLinkMetadata.Url; 
       } 
      } 
      else 
      { 
       await this.ChunkUpload(dbx, remotePath, fileStream, ChunkSize); 
      } 
      return "error"; 
     } 
    } 

しかし、それはListSharedLinksAsync関数になるとき、それは、正常に動作していない、それはすべてのエラーをスローwitout作業を停止します。私はそれがクラッシュした後、私がアップロードしようとするファイルにアクセスできないことに気付く

、私は「別のproccessエラーによって使用される」取得...

私が間違って何をしているのですか?

+1

は、あなたがこの行でawaitをを欠落していないことでしょうか? '' 'var sharedLink = dbx.Sharing.ListSharedLinksAsync(remotePath);' '' – JOSEFtw

+0

どのフレームワークのバージョンを使用していますか? – dadde

+0

@JOSEFtw良い点、私はそれを試してみましょう。 – user3378165

答えて

2

この行が待ち受けていないようですが、デッドロックが発生していますか?

var sharedLink = dbx.Sharing.ListSharedLinksAsync(remotePath);

var sharedLink = await dbx.Sharing.ListSharedLinksAsync(remotePath);

関連する問題