Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 上载到Dropbox无法运行.NET SDK_C#_Dropbox - Fatal编程技术网

C# 上载到Dropbox无法运行.NET SDK

C# 上载到Dropbox无法运行.NET SDK,c#,dropbox,C#,Dropbox,我有下面的函数将文件上传到Drobox并返回这些文件的共享链接 private async Task<string> Upload(DropboxClient dbx, string localPath, string remotePath) { const int ChunkSize = 4096 * 1024; using (var fileStream = File.Open(localPath, FileMode.Open))

我有下面的函数将文件上传到Drobox并返回这些文件的共享链接

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";
        }
    }
私有异步任务上载(DropboxClient dbx、字符串localPath、字符串remotePath)
{
常量int ChunkSize=4096*1024;
使用(var fileStream=File.Open(localPath,FileMode.Open))
{
if(fileStream.Length 0)
{
返回listSharedLinksResult.Links[0].Url;
}
其他的
{
var settings2=新的SharedLinkSettings(过期日期:DateTime.Today.AddDays(7));
SharedLinkMetadata SharedLinkMetadata=await dbx.Sharing.CreateSharedLinkWithSettingsAsync(远程路径,设置2);
返回sharedLinkMetadata.Url;
}
}
其他的
{
var settings=newsharedlinksettings(过期:DateTime.Today.AddDays(7));
SharedLinkMetadata SharedLinkMetadata=await dbx.Sharing.CreateSharedLinkWithSettingsAsync(fileMetadata.PathLower,设置);
返回sharedLinkMetadata.Url;
}
}
其他的
{
等待这个.ChunkUpload(dbx、remotePath、fileStream、ChunkSize);
}
返回“错误”;
}
}
但是它不能正常工作,当它到达
ListSharedLinksAsync
函数时,它停止工作,不会抛出任何错误

我注意到我试图上传的文件在崩溃后无法访问,我得到一个“被另一个进程使用”错误


我做错了什么?

您似乎错过了此行的等待,从而导致了死锁

var sharedLink=dbx.Sharing.ListSharedLinksAsync(远程路径)

应该是


var sharedLink=await dbx.Sharing.ListSharedLinksAsync(远程路径)

这一排的等待不是你错过了吗
var sharedLink=dbx.Sharing.ListSharedLinksAsync(远程路径)您使用的是哪个框架版本?@JOSEFtw很好,我会试试。@dadde-VS2013@JOSEFtw这解决了我的问题,谢谢!我很乐意将其标记为正确答案,请将其作为答案填写,我会这样做。