TechnitiumSoftware/DnsServer · critical · InvalidDataException

Web Service config version not supported.

Error message

Web Service config version not supported.

What it means

InvalidDataException thrown by ReadConfigFrom when the version byte read after the 'WC' signature is greater than 4. Each config format revision bumps this byte; an older server binary refuses a config written by a newer server to avoid misinterpreting fields it does not know.

Source

Thrown at DnsServerCore/DnsWebService.cs:480

            foreach (AuthZoneInfo zone in zones)
            {
                _authManager.SetPermission(PermissionSection.Zones, zone.Name, admins, PermissionFlag.ViewModifyDelete);
                _authManager.SetPermission(PermissionSection.Zones, zone.Name, dnsAdmins, PermissionFlag.ViewModifyDelete);
            }

            _authManager.SaveConfigFile();
        }

        private void ReadConfigFrom(Stream s)
        {
            if (Encoding.ASCII.GetString(s.ReadExactly(2)) != "WC") //format
                throw new InvalidDataException("Web Service config file format is invalid.");

            BinaryReader bR = new BinaryReader(s);

            int version = bR.ReadByte();
            if (version > 4)
                throw new InvalidDataException("Web Service config version not supported.");

            _webServiceHttpPort = bR.ReadInt32();
            _webServiceTlsPort = bR.ReadInt32();

            {
                IPAddress[] webServiceLocalAddresses;

                int count = bR.ReadByte();
                if (count > 0)
                {
                    IPAddress[] localAddresses = new IPAddress[count];

                    for (int i = 0; i < count; i++)
                        localAddresses[i] = IPAddressExtensions.ReadFrom(bR);

                    webServiceLocalAddresses = localAddresses;
                }
                else

View on GitHub (pinned to d0484b6c1e)

Solutions

  1. Upgrade the Technitium DNS Server binary to a version that understands config version > 4.
  2. Restore a config file written by this (or older) server version instead of the newer one.
  3. Start fresh: remove the config so defaults are regenerated, then reconfigure manually.

Example fix

null
Defensive patterns

Strategy: validation

Validate before calling

// Read the version byte and refuse configs newer than this binary supports
using var fs = File.OpenRead(configPath);
fs.ReadByte(); fs.ReadByte(); // skip 'WC'
int version = fs.ReadByte();
if (version > 4)
    throw new InvalidDataException($"Config version {version} is newer than this server supports.");

Type guard

null

Try / catch

null

Prevention

When it happens

Trigger: Loading a Web Service config file produced by a newer Technitium version into an older binary. The version byte exceeds 4, so the loader rejects it.

Common situations: Downgrading the DNS server after running a newer release; copying a config from a newer node into an older one; restoring a backup made on a newer version onto an older install.

Related errors


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