为啥我的 WorkItem 由于未处理的访问冲突错误而失败?
Posted
技术标签:
【中文标题】为啥我的 WorkItem 由于未处理的访问冲突错误而失败?【英文标题】:Why is my WorkItem failing due to an Unhandled Access Violation error?为什么我的 WorkItem 由于未处理的访问冲突错误而失败? 【发布时间】:2019-07-05 09:54:07 【问题描述】:我正在尝试使用设计自动化 API 的 v2 和 forge-api-nodejs-client
发布工作项。 WorkItem 将 json 文件作为输入参数。我创建的自定义 .NET 插件依赖于 json 文件。
由于FailedMissingOutput
,WorkItem 失败。我打印了报告并注意到了这一点......
[02/11/2019 19:14:48] Command: DRAWMARKUPS
[02/11/2019 19:14:49] ************************MessageBox****************************
[02/11/2019 19:14:49] AutoCAD Error Aborting
[02/11/2019 19:14:49] FATAL ERROR: Unhandled Access Violation Reading 0x0008 Exception at 82480c14h
[02/11/2019 19:14:49] >>>Responding: OK.
[02/11/2019 19:14:49] **************************************************************
[02/11/2019 19:14:49] ************************MessageBox****************************
[02/11/2019 19:14:49] AutoCAD Error-abort
[02/11/2019 19:14:49] Error handler re-entered. Exiting now.
[02/11/2019 19:14:49] >>>Responding: OK.
[02/11/2019 19:14:49] **************************************************************
[02/11/2019 19:14:49] End AutoCAD Core Engine standard output dump.
[02/11/2019 19:14:50] Error: AutoCAD Core Console output contains error(s).
[02/11/2019 19:14:50] End script phase.
[02/11/2019 19:14:50] Start upload phase.
[02/11/2019 19:14:50] Error: Non-optional output [a57863c8-3085-4bc2-90b6-709595f1c566.dwg.dwg] is missing .
[02/11/2019 19:14:50] Error: An unexpected error happened during phase Publishing of job.
[02/11/2019 19:14:50] Job finished with result FailedMissingOutput
这是我的 .NET 插件中可能会破坏它的行...
string drawingName = Path.GetFileName(acDoc.Name);
...
// Read input parameters from JSON file
JArray jArray = JArray.Parse(File.ReadAllText("markups.json"));
...
acCurDb.SaveAs(drawingName, DwgVersion.AC1027);
另外,我的活动定义中的Instruction
对象中没有包含任何CommandLineParameters
。
const activityObject =
id: id,
instruction:
CommandLineParameters: null,
Script: `$script`
,
appPackages: appPackages,
requiredEngineVersion: `20.1`,
parameters:
InputParameters: [
Name: `HostDwg`,
LocalFileName: `$(HostDwg)`
],
OutputParameters: [
Name: outPutFilename,
LocalFileName: `$outPutFilename.dwg`
]
,
allowedChildProcesses: [],
version: 1,
isPublic: true,
theData: null,
obj: null
;
我怀疑我的活动定义中缺少正确的CommandLineParameters
,但我不知道应该是什么。
为什么我的 WorkItem 失败了?是Activity还是插件?还有,我该如何解决这个问题?
更新:我修正了输出文件名中的.dwg.dwg
错字。现在 WorkItem 成功了,但我仍然收到 Unhandled Access Violation
错误。此外,我的脚本似乎没有在 json 文件中读取。该插件在本地工作,所以我仍然不知道发生了什么。
【问题讨论】:
【参考方案1】:我建议您向 .net 插件添加更多日志记录,以便您可以对问题进行三角测量。您可以使用简单的 Console.WriteLine 方法,它们将出现在您的报告中。您可能希望捕获异常并将其转储出来,以便了解失败的原因。
markup.json 来自哪里?那是你的 AppPackage zip 的一部分吗?
我认为CommandLineParameters
在这里没有任何作用。对于使用 accoreconsole.exe 的活动,您可以将其留空。我们将默认它。
【讨论】:
会的。这真是太好了。我将 markups.json 作为一个对象上传到我的存储桶中,并为它创建了一个签名的资源 URL。该 URL 是我提供给 WorkItem 定义的内容。 我的日志记录方法没有出现在报告中。我正在使用 System.Console.WriteLine("blah blah"); 只要您使用 WriteLine,它就应该可以工作。写入可能不起作用,因为您的进程可能会在刷新缓冲区之前崩溃。 WriteLine 刷新缓冲区。 您是如何读取带有签名 URL 的 JSON 的?File.ReadAllText
肯定行不通。签名的 URL 在本地有效吗?以上是关于为啥我的 WorkItem 由于未处理的访问冲突错误而失败?的主要内容,如果未能解决你的问题,请参考以下文章
未处理的异常,glGenVertexArrays 调用上的访问冲突
C++ Battle4Zion 项目抛出未处理的异常:读取访问冲突。 **this** 是 nullptr。发生了
wglBindTexImageARB 上的访问冲突;由于 WGL_FRONT_LEFT_ARB 未定义所有 wgext.h 包括在内?