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 }); ```
答案 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内容嵌入有效负载中。