TechnitiumSoftware/DnsServer · error · DnsServerException
The zone '<memberZoneInfo.DisplayName>' is not a member of a
Error message
The zone '<memberZoneInfo.DisplayName>' is not a member of any Catalog zone.
What it means
Thrown by ChangeCatalogMemberZoneOwnership when the member zone is not currently attached to any catalog. The method reads memberZoneInfo.ApexZone.CatalogZoneName; if it is null there is no ownership to change, so it refuses.
Source
Thrown at DnsServerCore/Dns/ZoneManagers/AuthZoneManager.cs:1888
break;
default:
throw new NotSupportedException();
}
}
public void ChangeCatalogMemberZoneOwnership(AuthZoneInfo memberZoneInfo, string newCatalogZoneName)
{
switch (memberZoneInfo.Type)
{
case AuthZoneType.Primary:
case AuthZoneType.Secondary:
case AuthZoneType.Stub:
case AuthZoneType.Forwarder:
string currentCatalogZoneName = memberZoneInfo.ApexZone.CatalogZoneName;
if (currentCatalogZoneName is null)
throw new DnsServerException("The zone '" + memberZoneInfo.DisplayName + "' is not a member of any Catalog zone.");
AddCatalogMemberZone(newCatalogZoneName, memberZoneInfo, true);
if (!memberZoneInfo.Disabled)
{
ApexZone apexZone = _root.GetApexZone(currentCatalogZoneName);
if (apexZone is CatalogZone currentCatalogZone)
{
currentCatalogZone.ChangeMemberZoneOwnership(memberZoneInfo.Name, newCatalogZoneName);
//save catalog changes
SaveZoneFile(currentCatalogZone.Name);
}
}
break;
default:View on GitHub (pinned to d0484b6c1e)
Solutions
- If the zone is not yet a member, call AddCatalogMemberZone(newCatalogZoneName, memberZoneInfo) instead of ChangeCatalogMemberZoneOwnership.
- Pre-check memberZoneInfo.ApexZone.CatalogZoneName; if null, route to Add.
- Refresh memberZoneInfo before deciding which API to call.
- Guard the UI action so 'change ownership' only appears for zones already in a catalog.
Example fix
// before
manager.ChangeCatalogMemberZoneOwnership(memberZone, newCatalog); // throws if not a member
// after
if (string.IsNullOrEmpty(memberZone.ApexZone.CatalogZoneName))
manager.AddCatalogMemberZone(newCatalog, memberZone);
else
manager.ChangeCatalogMemberZoneOwnership(memberZone, newCatalog); Defensive patterns
Strategy: validation
Validate before calling
if (string.IsNullOrEmpty(memberZone.ApexZone.CatalogZoneName))
manager.AddCatalogMemberZone(newCatalogZoneName, memberZone); // add, not change
else
manager.ChangeCatalogMemberZoneOwnership(memberZone, newCatalogZoneName); Try / catch
catch (DnsServerException ex) when (ex.Message.Contains("not a member of any")) { manager.AddCatalogMemberZone(newCatalogZoneName, memberZone); } Prevention
- Check CatalogZoneName before choosing Add vs ChangeOwnership.
- Only offer 'move catalog' for zones already in a catalog.
- Refresh member state before the operation.
When it happens
Trigger: Calling ChangeCatalogMemberZoneOwnership(memberZoneInfo, newCatalogZoneName) for a zone whose ApexZone.CatalogZoneName is null (never added to a catalog, or already removed). Line 1887 detects null and throws at 1888.
Common situations: Calling change-ownership on a freshly created zone that was never added to a catalog. Re-running a migration script after a prior removal. UI offering 'move catalog' for non-member zones.
Related errors
- The zone '<memberZoneInfo.DisplayName>' is already a member
- No such Catalog zone was found: <catalogZoneName>
- No such zone was found: <sourceZoneName or ".">
- No such zone was found: <zoneName or ".">
- Cannot convert the zone '<currentZoneInfo.DisplayName>' from
AI-assisted analysis of TechnitiumSoftware/DnsServer@d0484b6c1e (2026-08-13).
Data as JSON: /api/errors/620ad2a246673d4a.
Report an issue: GitHub.