Dropbox文件上传后获取共享链接返回WaitingForActivation如何解决
问题根因
你遇到的WaitingForActivation状态是异步任务未完成就直接访问Result属性导致的,问题出在CreateSharedLinkWithSettingsAsync的调用逻辑:你没有等待这个异步方法执行完成,直接读取了未完成任务的Result属性。
C# 中所有后缀为Async的方法默认返回Task/Task<T>类型,不加await直接调用时,拿到的是还在后台执行的任务对象,任务未完成阶段访问Result就会返回WaitingForActivation状态,同时这种写法还可能引发线程死锁。
修复方案
修改创建共享链接的代码,给异步方法调用加上await,等待任务执行完成后直接读取返回结果即可,不需要再访问Result属性:
修改前的代码片段:
if (link.Links.Count == 0) { var result = client.Sharing.CreateSharedLinkWithSettingsAsync(path); url = result.Result.Url; }
修改后的代码片段:
if (link.Links.Count == 0) { var result = await client.Sharing.CreateSharedLinkWithSettingsAsync(path); url = result.Url; }
额外补充
如果你需要直接下载的链接而非预览链接,可以把最终拿到的共享链接末尾的dl=0参数修改为dl=1,访问时会直接触发文件下载。
内容的提问来源于stack exchange,提问作者ErocM
相关产品推荐
相关产品推荐

