{"record":{"id":"85d9bc7beeb579a0","repo":"TechnitiumSoftware/DnsServer","slug":"cannot-add-record-in-zone","errorCode":null,"errorMessage":"Cannot add record in {} zone.","messagePattern":"Cannot add record in (.+?) zone\\.","errorType":"exception","errorClass":"InvalidOperationException","httpStatus":null,"severity":"error","filePath":"DnsServerCore/Dns/Zones/SecondarySubDomainZone.cs","lineNumber":53,"sourceCode":"\n        public SecondarySubDomainZone(SecondaryZone secondaryZone, string name)\n            : base(secondaryZone, name)\n        {\n            _secondaryZone = secondaryZone;\n        }\n\n        #endregion\n\n        #region public\n\n        public override void SetRecords(DnsResourceRecordType type, IReadOnlyList<DnsResourceRecord> records)\n        {\n            throw new InvalidOperationException(\"Cannot set records in \" + _secondaryZone.GetZoneTypeName() + \" zone.\");\n        }\n\n        public override bool AddRecord(DnsResourceRecord record)\n        {\n            throw new InvalidOperationException(\"Cannot add record in \" + _secondaryZone.GetZoneTypeName() + \" zone.\");\n        }\n\n        public override bool DeleteRecord(DnsResourceRecordType type, DnsResourceRecordData record)\n        {\n            throw new InvalidOperationException(\"Cannot delete record in \" + _secondaryZone.GetZoneTypeName() + \" zone.\");\n        }\n\n        public override bool DeleteRecords(DnsResourceRecordType type)\n        {\n            throw new InvalidOperationException(\"Cannot delete records in \" + _secondaryZone.GetZoneTypeName() + \" zone.\");\n        }\n\n        public override void UpdateRecord(DnsResourceRecord oldRecord, DnsResourceRecord newRecord)\n        {\n            throw new InvalidOperationException(\"Cannot update record in \" + _secondaryZone.GetZoneTypeName() + \" zone.\");\n        }\n\n        #endregion","sourceCodeStart":35,"sourceCodeEnd":71,"githubUrl":"https://github.com/TechnitiumSoftware/DnsServer/blob/d0484b6c1e7439cdc53d67d81e9c876cda2ad756/DnsServerCore/Dns/Zones/SecondarySubDomainZone.cs#L35-L71","documentation":"Thrown unconditionally by SecondarySubDomainZone.AddRecord. Read-only secondary sub-domain zones cannot be mutated locally; InvalidOperationException signals the operation is unsupported. Same rationale as error 595 but for single-record addition.","triggerScenarios":"Calling subZone.AddRecord(record) on a SecondarySubDomainZone.","commonSituations":"Record-import or API-write code paths that assume every zone accepts additions; treating sub-domains as writable caches.","solutions":["Guard AddRecord with a zone-type check; skip for SecondarySubDomainZone.","Use a primary sub-domain zone if local authoring is required.","Route all writes through a write-capable check."],"exampleFix":"// before\nzone.AddRecord(record);\n\n// after\nif (zone is SecondarySubDomainZone)\n    return; // read-only\nzone.AddRecord(record);","handlingStrategy":"type-guard","validationCode":"if (zone is SecondarySubDomainZone)\n    return;\nzone.AddRecord(record);","typeGuard":"static bool IsWritable(AuthZone zone) => zone is not SecondarySubDomainZone;","tryCatchPattern":"null","preventionTips":["Centralize add/delete/update behind an IsWritable check.","Use primary sub-domain zones where local authoring is needed."],"tags":["dns","secondary-subdomain-zone","read-only","immutable","zone-type"],"backgroundTag":null,"analyzedSha":"d0484b6c1e7439cdc53d67d81e9c876cda2ad756","analyzedAt":"2026-08-13T22:57:35.508Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}