{"record":{"id":"d503b4db6972ef58","repo":"babalae/better-genshin-impact","slug":"error-d503b4","errorCode":null,"errorMessage":"根实例连接响应缺少数据。","messagePattern":"根实例连接响应缺少数据。","errorType":"exception","errorClass":"InvalidDataException","httpStatus":null,"severity":"error","filePath":"BetterGenshinImpact/Service/Instance/InstanceBootstrap.cs","lineNumber":239,"sourceCode":"\n                    var response = InstanceIpcProtocol.ReadJson(frame.Value);\n                    if (response.Operation != InstanceOperations.Response\n                        || response.RequestId != request.RequestId)\n                    {\n                        client.Dispose();\n                        continue;\n                    }\n                    if (response.Success != true)\n                    {\n                        client.Dispose();\n                        throw new InvalidOperationException(\n                            response.ErrorMessage ?? response.ErrorCode ?? \"根实例拒绝连接。\");\n                    }\n\n                    var openResponse =\n                        response.Data?.ToObject<ConnectionOpenResponse>(\n                            InstanceIpcProtocol.Serializer)\n                        ?? throw new InvalidDataException(\"根实例连接响应缺少数据。\");\n                    return new InitialRootConnection(client, openResponse);\n                }\n                catch\n                {\n                    client.Dispose();\n                    throw;\n                }\n            }\n            catch (Exception exception) when (exception is IOException\n                                              or UnauthorizedAccessException\n                                              or TimeoutException\n                                              or OperationCanceledException)\n            {\n                Debug.WriteLine(exception);\n                Trace.TraceWarning(\n                    \"连接 BetterGI 根管道失败，命名管道：{0}，原因：{1}\",\n                    pipeName,\n                    exception.GetBaseException().Message);","sourceCodeStart":221,"sourceCodeEnd":257,"githubUrl":"https://github.com/babalae/better-genshin-impact/blob/a7cb36712dcb409be610257d877fcea3597e9d6b/BetterGenshinImpact/Service/Instance/InstanceBootstrap.cs#L221-L257","documentation":"Thrown when the root instance returns Success == true for connection.open but response.Data cannot be converted to ConnectionOpenResponse (Data is null, or its JSON shape does not match). The protocol contract requires a populated ConnectionOpenResponse on a successful open.","triggerScenarios":"Root handler returned a success response without setting Data, or the ConnectionOpenResponse serialization contract changed between builds so JObject.ToObject<ConnectionOpenResponse> returns null.","commonSituations":"Version skew between the root and the connecting instance — the root speaks a newer/older response shape; a handler bug that omits Data on the success path.","solutions":["Ensure the connecting instance and the root instance are the exact same BetterGI build.","Restart the root instance to clear any bad handler state.","If reproducing on the same build, this is a handler bug — check the root's connection.open handler to confirm it always populates ConnectionOpenResponse."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try\n{\n    var openResponse = response.Data?.ToObject<ConnectionOpenResponse>(InstanceIpcProtocol.Serializer)\n        ?? throw new InvalidDataException(\"根实例连接响应缺少数据。\");\n}\ncatch (InvalidDataException ex)\n{\n    logger.LogError(ex, \"Root connection response missing data; version skew likely\");\n}","preventionTips":["Run the same BetterGI build for root and connecting instances.","Restart the root instance to clear bad handler state.","Unit-test the connection.open handler to confirm it always populates ConnectionOpenResponse on success."],"tags":["ipc","instance","serialization","named-pipe"],"backgroundTag":null,"analyzedSha":"a7cb36712dcb409be610257d877fcea3597e9d6b","analyzedAt":"2026-08-13T16:44:57.548Z","schemaVersion":2},"datasetVersion":"2026-08-13T19:17:28.613Z"}