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;
}
elseView on GitHub (pinned to d0484b6c1e)
Solutions
- Upgrade the Technitium DNS Server binary to a version that understands config version > 4.
- Restore a config file written by this (or older) server version instead of the newer one.
- 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
- Match or exceed the Technitium version that wrote the config.
- Do not restore configs from newer nodes onto older installs.
- Track the config version when copying between environments.
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
- Web Service config file format is invalid.
- Failed to read 'Zones' permissions: auth.config file is prob
- Failed to find 'Administrators' group: auth.config file is p
- Failed to find 'DNS Administrators' group: auth.config file
- Web Service TLS certificate file does not exists: {tlsCertif
AI-assisted analysis of TechnitiumSoftware/DnsServer@d0484b6c1e (2026-08-13).
Data as JSON: /api/errors/6e8f7022127c17ba.
Report an issue: GitHub.