上传到 Dropbox 不工作.NET SDK

Upload to Dropbox not working .NET SDK

我有以下功能可以将文件上传到 Drobox 并returns共享这些文件的链接。

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 函数时,它会停止工作而不会抛出任何错误。

我注意到我尝试上传的文件在崩溃后无法访问,我收到 "used by another proccess error"...

我做错了什么?

您似乎在这一行中缺少等待,从而导致死锁?

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

应该是

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