上传 Autodesk 设计自动化、dotnet Core 时出错..... 1 个 rfa 和 1 个 Json 大文件作为输入传递
Error uploading Autodesk design automation, dotnet Core..... 1 rfa and 1 big Json file to pass as input
Revit 插件运行良好,我也已正确转换以实现设计自动化。我已经用本地调试器调试了它。它工作完美。
所以我可以说 app bundle 做得很好。
现在来看 Web 应用程序代码,它在 "workItemStatus" 的最后一行之前都能正常工作。
我需要一个 rfa 文件和一个大的 Json 文件作为输入文件,运行 代码。两者加在一起的大小为 1 MB。但是上传文件时代码是堆栈(无休止地等待),工作项没有启动。
我在另一个 Whosebug post 中读到,Forge 不允许超过 16kb 的上传到 oss bucket by.....
Url = string.Format("https://developer.api.autodesk.com/oss/v2/buckets/{0}/objects/{1}", bucketKey, inputFileNameOSS)
post 说,我需要将更大的文件上传到另一个云服务并使用登录 URL 而不是 Forge oss 存储桶。
代码在调试时看起来是正确的,当它到达行时它是堆栈
WorkItemStatus workItemStatus = await _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 }); ```
I read in another Whosebug post, that Forge does not allow more than 16kb upload to oss bucket by..
16kb 的限制是针对 payload
的设计自动化端点,包括工作项。限制定义为 here。如果工作项负载超过 16kb,您将看到错误 HTTP 413 Payload Too Large
.
要将大量 json 输入发送到设计自动化,您可以先将 json 上传到 OSS(或者甚至是其他存储服务,例如 Amazon S3)。然后将带有签名url的工作项调用到json文件(类似于rfa文件的签名url)。
编辑:
1. 可以使用数据管理 endpoint 将大型 JSON 文件上传到 OSS。
2. 然后可以使用 endpoint 为该对象获取具有 read
访问权限的签名 URL。
3. 然后可以将获得的 URL 作为 input argument
传递给设计自动化工作项有效负载,而不是将 json 内容嵌入到有效负载中。
Revit 插件运行良好,我也已正确转换以实现设计自动化。我已经用本地调试器调试了它。它工作完美。 所以我可以说 app bundle 做得很好。
现在来看 Web 应用程序代码,它在 "workItemStatus" 的最后一行之前都能正常工作。 我需要一个 rfa 文件和一个大的 Json 文件作为输入文件,运行 代码。两者加在一起的大小为 1 MB。但是上传文件时代码是堆栈(无休止地等待),工作项没有启动。 我在另一个 Whosebug post 中读到,Forge 不允许超过 16kb 的上传到 oss bucket by..... Url = string.Format("https://developer.api.autodesk.com/oss/v2/buckets/{0}/objects/{1}", bucketKey, inputFileNameOSS) post 说,我需要将更大的文件上传到另一个云服务并使用登录 URL 而不是 Forge oss 存储桶。
代码在调试时看起来是正确的,当它到达行时它是堆栈 WorkItemStatus workItemStatus = await _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 }); ```
I read in another Whosebug post, that Forge does not allow more than 16kb upload to oss bucket by..
16kb 的限制是针对 payload
的设计自动化端点,包括工作项。限制定义为 here。如果工作项负载超过 16kb,您将看到错误 HTTP 413 Payload Too Large
.
要将大量 json 输入发送到设计自动化,您可以先将 json 上传到 OSS(或者甚至是其他存储服务,例如 Amazon S3)。然后将带有签名url的工作项调用到json文件(类似于rfa文件的签名url)。
编辑:
1. 可以使用数据管理 endpoint 将大型 JSON 文件上传到 OSS。
2. 然后可以使用 endpoint 为该对象获取具有 read
访问权限的签名 URL。
3. 然后可以将获得的 URL 作为 input argument
传递给设计自动化工作项有效负载,而不是将 json 内容嵌入到有效负载中。