TechnitiumSoftware/DnsServer · error · ArgumentException
The Notify option is invalid for {0} zones: {1}
Error message
The Notify option is invalid for {0} zones: {1} What it means
Thrown by the ForwarderZone.Notify setter when value is AuthZoneNotify.ZoneNameServers (1) or AuthZoneNotify.BothZoneAndSpecifiedNameServers (3). These NOTIFY modes push change notifications to the zone's authoritative name servers (its NS records), but a Conditional Forwarder is non-authoritative and has no NS set, so there is nothing to notify. Valid notify options for a forwarder zone are None(0), SpecifiedNameServers(2), and (only for CatalogZone) SeparateNameServersForCatalogAndMemberZones(4). ArgumentException names 'Notify'.
Source
Thrown at DnsServerCore/Dns/Zones/ForwarderZone.cs:341
case AuthZoneTransfer.AllowOnlyZoneNameServers:
case AuthZoneTransfer.AllowZoneNameServersAndUseSpecifiedNetworkACL:
throw new ArgumentException("The Zone Transfer option is invalid for " + GetZoneTypeName() + " zones: " + value.ToString(), nameof(ZoneTransfer));
}
base.ZoneTransfer = value;
}
}
public override AuthZoneNotify Notify
{
get { return base.Notify; }
set
{
switch (value)
{
case AuthZoneNotify.ZoneNameServers:
case AuthZoneNotify.BothZoneAndSpecifiedNameServers:
throw new ArgumentException("The Notify option is invalid for " + GetZoneTypeName() + " zones: " + value.ToString(), nameof(Notify));
case AuthZoneNotify.SeparateNameServersForCatalogAndMemberZones:
if (this is CatalogZone)
break;
throw new ArgumentException("The Notify option is invalid for " + GetZoneTypeName() + " zones: " + value.ToString(), nameof(Notify));
}
base.Notify = value;
}
}
public override AuthZoneUpdate Update
{
get { return base.Update; }
set
{
switch (value)View on GitHub (pinned to d0484b6c1e)
Solutions
- For a ForwarderZone use Notify = None, SpecifiedNameServers, or (if catalog) SeparateNameServersForCatalogAndMemberZones.
- When you need to notify explicit secondaries only, configure them as SpecifiedNameServers.
- Drive the available Notify enum values from the zone type in your settings UI.
Example fix
// before zone.Notify = AuthZoneNotify.BothZoneAndSpecifiedNameServers; // after zone.Notify = AuthZoneNotify.SpecifiedNameServers; // forwarder: notify only the list you provide
Defensive patterns
Strategy: type-guard
Validate before calling
var valid = new[] { AuthZoneNotify.None, AuthZoneNotify.SpecifiedNameServers };
if (zone is CatalogZone) valid = valid.Append(AuthZoneNotify.SeparateNameServersForCatalogAndMemberZones).ToArray();
if (!valid.Contains(value)) throw new ArgumentException($"Notify {value} not valid for this zone.");
zone.Notify = value; Type guard
static bool IsValidForwarderNotify(AuthZoneNotify v, Zone z) => v == AuthZoneNotify.None || v == AuthZoneNotify.SpecifiedNameServers || (v == AuthZoneNotify.SeparateNameServersForCatalogAndMemberZones && z is CatalogZone);
Try / catch
try { zone.Notify = value; }
catch (ArgumentException) { zone.Notify = AuthZoneNotify.SpecifiedNameServers; } Prevention
- For a plain ForwarderZone, Notify may only be None or SpecifiedNameServers.
- Reserve the name-server-based Notify modes for authoritative zones that have NS records.
- Gate the catalog/member mode behind an 'is CatalogZone' check in the UI.
When it happens
Trigger: Assigning zone.Notify = AuthZoneNotify.ZoneNameServers or AuthZoneNotify.BothZoneAndSpecifiedNameServers on a ForwarderZone via the zone settings API or a config batch.
Common situations: Defaulting Notify to 'BothZoneAndSpecifiedNameServers' across all zones during provisioning; copying notify settings from a primary zone; UI not filtering notify options by zone type.
Related errors
- The Query Access option is invalid for {0} zones: {1}
- The Zone Transfer option is invalid for {0} zones: {1}
- The Dynamic Updates option is invalid for {0} zones: {1}
- Unix Domain Sockets (UDS) are supported only on Linux, Windo
- Name server addresses cannot have more than 255 entries.
AI-assisted analysis of TechnitiumSoftware/DnsServer@d0484b6c1e (2026-08-13).
Data as JSON: /api/errors/a067055ea1610ca4.
Report an issue: GitHub.