You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET谷歌云盘上传程序调用Google Drive API抛出TaskCanceledException问题

问题根因及修复方案

1. 谷歌API默认超时阈值不足

Google.Apis官方客户端的默认HttpClient超时时间仅为100秒,若你上传的文件较大、夜间跨国链路存在波动,很容易触发超时自动取消任务。你代码中注释掉的超时配置就是核心修复点,放开并调整为和你的1小时整体超时逻辑对齐即可:

UploadRequest.Service.HttpClient.Timeout = TimeSpan.FromSeconds(3600)
UploadRequest.ContentStream.WriteTimeout = 3600000 ' 单位毫秒,对应1小时

2. 分块上传阈值配置不合理

Google Drive的InsertMediaUpload默认分块大小为10MB,大文件单分块传输时间超过超时阈值也会触发任务取消,可手动调小分块大小适配不稳定链路:

' 调整分块为2MB,降低单次传输超时概率
UploadRequest.ChunkSize = FilesResource.InsertMediaUpload.MinimumChunkSize * 2

3. 异常处理逻辑优化

你当前的Catch块统一捕获所有异常,没有针对TaskCanceledException做单独的重试逻辑优化,建议单独判断异常类型,触发即时重试降低等待成本:

Catch ex As AggregateException
    For Each innerEx In ex.InnerExceptions
        If TypeOf innerEx Is TaskCanceledException Then
            logger.Debug($"上传超时取消,准备重试,文件名:{nome}")
            ' 此处可添加你的自定义重试逻辑,注意控制重试次数避免死循环
        End If
    Next
    AnnulloCaricamento(nome, dataultimaModifica, pathDb)
Catch ex As Exception
    AnnulloCaricamento(nome, dataultimaModifica, pathDb)

4. 设备网络链路排查

部分设备如果使用家用宽带,运营商可能会在夜间低流量时段自动断开长连接、或者对境外端口做限流,可在上传前先调用一次谷歌Drive的轻量查询接口做连通性校验,确认链路正常后再启动上传。

内容的提问来源于stack exchange,提问作者Simone Barattino

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 07:06:04