APS Revit Design Automation结果存储桶上传失败问题求助
解决APS Revit Design Automation输出文件上传失败问题
错误1:JWT格式无效(IDX12709)
直接在XrefTreeArgument中携带Bearer token的方式不适用,Design Automation上传到Autodesk OSS时,不能通过这种方式认证,必须生成PUT方法的预签名URL,具体操作:
- 调用OSS API的
POST /oss/v2/buckets/{bucketKey}/objects/{resultKey}/signeds3upload端点,生成用于上传的预签名URL - 将该预签名URL直接赋值给
XrefTreeArgument.Url,无需额外添加Authorization头——预签名URL已包含完整认证信息
示例代码:
// 生成上传预签名URL的请求逻辑 var uploadSignRequest = new HttpRequestMessage(HttpMethod.Post, $"https://developer.api.autodesk.com/oss/v2/buckets/{bucketKey}/objects/{resultKey}/signeds3upload"); uploadSignRequest.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token); // 设置预签名URL过期时间,示例为60分钟 uploadSignRequest.Content = new StringContent("{\"minutesExpiration\": 60}", Encoding.UTF8, "application/json"); var response = await httpClient.SendAsync(uploadSignRequest); response.EnsureSuccessStatusCode(); var signData = await response.Content.ReadFromJsonAsync<dynamic>(); string presignedUploadUrl = signData.signedUrl; // 构造输出参数 var outputFileArgument = new XrefTreeArgument() { Url = presignedUploadUrl, Verb = Verb.Put };
错误2:SignatureDoesNotMatch(签名字段不匹配)
你误用了signeds3download端点,该端点用于生成下载用的预签名URL,上传操作必须使用signeds3upload端点,原因如下:
- 下载与上传的预签名生成算法不同,用错端点会直接导致签名校验失败
- 确认请求
signeds3upload时,传入的bucketKey和resultKey完全正确,无拼写或格式错误 - 检查生成签名所用的token是否拥有
data:write权限,权限不足也会引发签名验证失败
额外注意事项
- 确保插件生成的输出文件存放在Design Automation的工作目录内(如
T:\Aces\Jobs\{JobId}\路径下),否则DA进程无法读取文件 - 若
resultKey包含特殊字符,需先进行URL编码再传入OSS API端点
内容的提问来源于stack exchange,提问作者maciejwypych
相关产品推荐
相关产品推荐

