TechnitiumSoftware/DnsServer · error · ArgumentException
The Notify option is invalid for {zoneType} zones: {value}
Error message
The Notify option is invalid for {zoneType} zones: {value} What it means
Thrown by the PrimaryZone.Notify setter when value is AuthZoneNotify.SeparateNameServersForCatalogAndMemberZones. That option is meaningful only for catalog zones (it splits notify targets between catalog and member zones); a plain PrimaryZone has no member-zone semantics, so assigning it is rejected with ArgumentException naming the offending value.
Source
Thrown at DnsServerCore/Dns/Zones/PrimaryZone.cs:2812
base.Disabled = value; //set value early to be able to use it for notify
if (value)
DisableNotifyTimer();
else
TriggerNotify();
}
}
public override AuthZoneNotify Notify
{
get { return base.Notify; }
set
{
switch (value)
{
case AuthZoneNotify.SeparateNameServersForCatalogAndMemberZones:
throw new ArgumentException("The Notify option is invalid for " + GetZoneTypeName() + " zones: " + value.ToString(), nameof(Notify));
}
base.Notify = value;
}
}
public IReadOnlyCollection<DnssecPrivateKey> DnssecPrivateKeys
{
get
{
if (_dnssecPrivateKeys is null)
return null;
lock (_dnssecPrivateKeys)
{
return _dnssecPrivateKeys.Values;
}
}View on GitHub (pinned to d0484b6c1e)
Solutions
- Use a supported Notify value for PrimaryZone: None, ZoneNameServers, SpecifiedNameServers, or BothZoneAndSpecifiedNameServers.
- Keep catalog-specific options out of primary-zone config objects.
- Validate the Notify enum against zone type before assigning.
Example fix
// before zone.Notify = AuthZoneNotify.SeparateNameServersForCatalogAndMemberZones; // after zone.Notify = AuthZoneNotify.BothZoneAndSpecifiedNameServers;
Defensive patterns
Strategy: type-guard
Validate before calling
static readonly HashSet<AuthZoneNotify> PrimaryValid = new()
{
AuthZoneNotify.None, AuthZoneNotify.ZoneNameServers,
AuthZoneNotify.SpecifiedNameServers, AuthZoneNotify.BothZoneAndSpecifiedNameServers
};
if (PrimaryValid.Contains(value)) zone.Notify = value; Type guard
static bool IsValidForPrimary(AuthZoneNotify v) =>
v != AuthZoneNotify.SeparateNameServersForCatalogAndMemberZones; Try / catch
null
Prevention
- Keep catalog-only options out of primary-zone config templates.
- Validate Notify against zone type when deserializing settings.
When it happens
Trigger: Setting zone.Notify = AuthZoneNotify.SeparateNameServersForCatalogAndMemberZones on a PrimaryZone (non-catalog).
Common situations: Reusing a zone-options object across zone types; copying config from a catalog zone to a primary; deserializing a settings file that contained the catalog-only value.
Related errors
- The Query Access option is invalid for Secondary Conditional
- The Dynamic Updates option is invalid for Secondary Conditio
- Cannot update DNS zone '{zoneInfo.DisplayName}': not a prima
- Cannot update reverse DNS zone '{reverseZoneInfo.DisplayName
- DnsServer allowed zone file format is invalid.
AI-assisted analysis of TechnitiumSoftware/DnsServer@d0484b6c1e (2026-08-13).
Data as JSON: /api/errors/95ebce6b36589088.
Report an issue: GitHub.