TechnitiumSoftware/DnsServer · error · DnsServerException

Failed to find '{memberZoneName}' member zone entry in '{zon

Error message

Failed to find '{memberZoneName}' member zone entry in '{zoneName}' Catalog zone: member zone does not exists.

What it means

CatalogZone.GetMemberZoneDomain looks up a member zone by name in the internal _membersIndex dictionary (protected by a ReaderWriterLockSlim). If the lowercased memberZoneName is not found as a key, it throws DnsServerException. Catalog zones (RFC 9432) maintain a member-to-domain mapping; requesting a member zone that has not been added/registered produces this error.

Source

Thrown at DnsServerCore/Dns/Zones/CatalogZone.cs:357

                _dnsServer.AuthZoneManager.SetRecord(_name, record);
            }
        }

        private string GetMemberZoneDomain(string memberZoneName = null)
        {
            if (memberZoneName is null)
            {
                return _name;
            }
            else
            {
                memberZoneName = memberZoneName.ToLowerInvariant();

                _membersIndexLock.EnterReadLock();
                try
                {
                    if (!_membersIndex.TryGetValue(memberZoneName, out string memberZoneDomain))
                        throw new DnsServerException("Failed to find '" + memberZoneName + "' member zone entry in '" + ToString() + "' Catalog zone: member zone does not exists.");

                    return memberZoneDomain;
                }
                finally
                {
                    _membersIndexLock.ExitReadLock();
                }
            }
        }

        private string GetDomainWithLabel(string domain)
        {
            Span<byte> buffer = stackalloc byte[8];
            int i = 0;

            do
            {
                RandomNumberGenerator.Fill(buffer);

View on GitHub (pinned to d0484b6c1e)

Solutions

  1. Verify the member zone name exists in the catalog by listing all member zones before referencing it.
  2. If the member zone should exist, trigger a catalog zone refresh/sync to rebuild the _membersIndex from the zone's PTR records.
  3. Use the exact member zone name string that was used when the member was added to the catalog.

Example fix

// before
catalogZone.SetZoneTransferProperty(AuthZoneTransfer.Allow, memberZoneName: "myzone");
// throws: 'myzone' not in _membersIndex

// after
// first verify membership:
// var members = catalogZone.ListMembers(); // confirm 'myzone' exists
catalogZone.SetZoneTransferProperty(AuthZoneTransfer.Allow, memberZoneName: actualMemberName);
Defensive patterns

Strategy: validation

Validate before calling

// Verify member zone exists before referencing it
// (use the catalog zone's member listing API to check)
string memberNameLower = memberZoneName.ToLowerInvariant();
// catalogZone exposes member enumeration — verify before calling member-specific APIs
if (!catalogZone.MemberExists(memberNameLower))
    throw new KeyNotFoundException($"Member zone '{memberZoneName}' not found in catalog '{catalogZone.Name}'.");

Try / catch

try { catalogZone.SetZoneTransferProperty(value, memberZoneName); }
catch (DnsServerException ex) when (ex.Message.Contains("member zone entry"))
{ /* list available members, prompt user to select valid name */ }

Prevention

When it happens

Trigger: Calling any CatalogZone method that accepts a memberZoneName parameter (e.g., SetZoneMdValidationProperty, SetZoneTransferProperty) with a member zone name that is not present in the catalog's _membersIndex. The name is lowercased before lookup, so case differences are not the issue — the member zone simply does not exist.

Common situations: Referencing a member zone that was removed or never added to the catalog; using the zone's display name instead of the registered member zone name; stale references after a catalog re-sync; typos in the member zone name in API calls or scripts.

Related errors


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