TechnitiumSoftware/DnsServer · critical · InvalidDataException

AuthRecordInfo format version not supported.

Error message

AuthRecordInfo format version not supported.

What it means

Thrown by AuthRecordInfo.ReadOldFormatFrom (the legacy deserializer reached when the on-disk version byte is < 9) when the version byte does not match any known case. Each case in the switch migrates an older AuthRecordInfo binary format; the default rejects any unrecognized version so a corrupt or future-format file fails loudly instead of being misread. This is the authoritative-record (zone) metadata persistence layer.

Source

Thrown at DnsServerCore/Dns/ResourceRecords/AuthRecordInfo.cs:223

                                    info.ZoneTransferProtocol = zoneTransferProtocol;

                                if (tsigKeyName.Length > 0)
                                    info.TsigKeyName = tsigKeyName;
                            }
                        }

                        if (version >= 8)
                        {
                            bool useSoaSerialDateScheme = bR.ReadBoolean();

                            if (this is SOARecordInfo info)
                                info.UseSoaSerialDateScheme = useSoaSerialDateScheme;
                        }
                    }
                    break;

                default:
                    throw new InvalidDataException("AuthRecordInfo format version not supported.");
            }
        }

        #endregion

        #region protected

        protected abstract void ReadRecordInfoFrom(BinaryReader bR);

        protected abstract void WriteRecordInfoTo(BinaryWriter bW);

        #endregion

        #region public

        public void WriteTo(BinaryWriter bW)
        {
            bW.Write((byte)9); //version

View on GitHub (pinned to d0484b6c1e)

Solutions

  1. Restore the zone file from backup; the version byte mismatch usually means corruption or an incompatible file.
  2. If this follows a server downgrade, upgrade back to the build that wrote the file, export the zone as a standard zone file, then re-import on the target build.
  3. Delete and recreate the affected zone if no clean copy exists, then reload authoritative records from a transferred/cached source.
Defensive patterns

Strategy: try-catch

Try / catch

// Wrap zone load; on legacy-format failure, fall back to text import or backup.
try { zone.Load(); }
catch (InvalidDataException ex) when (ex.Message == "AuthRecordInfo format version not supported.")
{
    _log.Error("Zone store incompatible/corrupt; restoring from backup or re-importing.");
    zone.RestoreFromBackupOrTextImport();
}

Prevention

When it happens

Trigger: Loading a zone file whose AuthRecordInfo header carries a version byte outside the handled set, or a file whose first byte was corrupted/truncated so the version reads as garbage. Triggered on zone load, import, or DNSSEC re-sign that re-reads records.

Common situations: Downgrading the DNS server to an older build that does not understand a newer zone format; a partially-written zone file from a crash; manual edits to the binary zone store.

Related errors


AI-assisted analysis of TechnitiumSoftware/DnsServer@d0484b6c1e (2026-08-13). Data as JSON: /api/errors/fddeb337aae38898. Report an issue: GitHub.