【问题标题】:Error uploading Autodesk design automation, dotnet Core..... 1 rfa and 1 big Json file to pass as input上传 Autodesk 设计自动化、dotnet Core 时出错..... 1 个 rfa 和 1 个大 Json 文件作为输入传递
【发布时间】:2020-10-01 07:03:20
【问题描述】:

Revit 插件运行良好,我也已正确转换为设计自动化。我已经使用本地调试器对其进行了调试。它工作完美。 所以我可以说 app bundle 做得很好。

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

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

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

【问题讨论】:

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


    【解决方案1】:

    我在另一个 stackoverflow 帖子中读到,Forge 不允许将超过 16kb 的文件上传到 oss 存储桶……

    16kb 限制在 payload 的设计自动化端点(包括工作项)上。限制定义为here。如果工作项负载超过 16kb,您将看到错误 HTTP 413 Payload Too Large。

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

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

    【讨论】:

    猜你喜欢
    • 2020-08-07
    • 2023-03-29
    • 2020-10-03
    • 1970-01-01
    • 2020-06-10
    • 1970-01-01
    • 1970-01-01
    • 2012-06-09
    • 2018-03-03
    相关资源
    最近更新 更多