上传欧特克设计自动化、dotnet 核心...1 个 RFA 和 1 个大 Json 文件作为输入传递



Revit 附加模块运行良好,我也已正确转换为设计自动化。我已经用本地调试器对其进行了调试。它工作完美。 所以我可以说应用程序包做得很好。

现在来到Web应用程序代码,它完美地工作到"workItemStatus"的最后一行。 我需要一个 rfa 文件和一个大的 Json 文件作为输入文件,来运行代码。两者加起来的大小为 1 MB。但是上传文件时代码是堆栈(无休止地等待(,工作项不会启动。 我在另一篇堆栈溢出帖子中读到,Forge 不允许超过 16kb 的上传到 oss 存储桶...... 网址 = 字符串。Format("https://developer.api.autodesk.com/oss/v2/buckets/{0}/objects/{1}", bucketKey, inputFileNameOSS( 那篇帖子说,我需要将更大的文件上传到另一个云服务,并使用登录的 URL 而不是 Forge oss 存储桶。

代码在调试时看起来是正确的,当它到达行时它是堆栈的WorkItemStatus workItemStatus = await _designAutomation.CreateWorkItemAsync(workItemSpec(;

我已经调试了代码,看起来可以完美工作,直到"workItemStatus"值,在DesignAutomationController中.cs"StartWorkItem"。 每个键和值看起来都完美传递。 是因为文件大小吗?由于 Json 文件很大,我像其他输入 (.rfa/.rvt( 文件一样上传它。


string callbackUrl = string.Format("{0}/api/forge/callback/designautomation?id={1}&outputFileName={2}", OAuthController.GetAppSetting("FORGE_WEBHOOK_URL"), browerConnectionId, outputFileNameOSS);
WorkItem workItemSpec = new WorkItem()
{
ActivityId = activityName,
Arguments = new Dictionary<string, IArgument>()
{
{ "inputFile", inputFileArgument },
{ "inputJsonFile", inputFileArgument1 },
{ "outputFile", outputFileArgument },
{ "onComplete", new XrefTreeArgument { Verb = Verb.Post, Url = callbackUrl } }
}
};
***WorkItemStatus workItemStatus = await _designAutomation.CreateWorkItemAsync(workItemSpec);***
return Ok(new { WorkItemId = workItemStatus.Id }); ```

我在另一篇stackoverflow帖子中读到,Forge不允许超过16kb上传到oss bucket

16kb 的限制适用于包括工作项在内的设计自动化端点payload。此处定义了限制。如果工作项有效负载超过 16kb,您将看到错误HTTP 413 Payload Too Large

要将大型 json 输入发送到设计自动化,您可以先将 json 上传到 OSS(甚至是其他存储服务,例如 Amazon S3(。然后,使用签名 url 调用工作项到 json 文件(类似于 rfa 文件的签名 url(。

编辑:
1。大型JSON文件可以通过数据管理端点上传到OSS。
2. 然后,可以使用端点获取该对象的具有read访问权限的签名 URL。
3. 然后可以将获得的 URL 作为input argument传递给设计自动化工作项有效负载,而不是将 json 内容嵌入到有效负载中。

最新更新