上载Autodesk设计自动化,dotnet Core ..... 1个rfa和1个大Json文件作为输入传递时出错

时间:2020-06-11 15:19:52

标签: c# ajax autodesk-forge autodesk-data-management autodesk-designautomation

Revit Addin可以正常工作,并且我也已正确转换了设计自动化功能。我已经使用本地调试器对其进行了调试。它工作完美。 所以我可以说应用程序捆绑包做得很好。

现在进入Web应用程序代码,它可以完美运行直到“ workItemStatus”的最后一行。 我需要一个rfa文件和一个大的Json文件作为输入文件,以运行代码。两者的大小均为1 mb。但是上载文件时代码已堆叠(无休止地等待),工作项无法启动。 我在另一篇stackoverflow文章中读到,Forge不允许通过.....将超过16kb的文件上传到oss存储桶。 网址= string.Format(“ https://developer.api.autodesk.com/oss/v2/buckets/ {0} / objects / {1}”,bucketKey,inputFileNameOSS) 那篇文章说,我将需要将更大的文件上传到另一个云服务,并使用登录的URL代替Forge oss bucket。

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

我已经调试了代码,直到在DesignAutomationController.cs“ StartWorkItem”中的“ workItemStatus”值之前都可以正常工作。 每个键和值看起来都完美地传递了。 是因为文件大小吗?由于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 }); ```

1 个答案:

答案 0 :(得分:2)

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

16kb的限制是在{@ {1}}设计自动化端点(包括工作项)上进行的。限制定义为here。如果工作项有效负载超过16kb,您将看到错误payload

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

修改:
1.可以使用数据管理endpoint将大型JSON文件上传到OSS。
2.然后,可以使用endpoint为该对象获取具有HTTP 413 Payload Too Large访问权限的签名URL。
3.然后,可以将获取的URL作为read传递给Design Automation工作项有效负载,而不必将json内容嵌入有效负载中。