TechnitiumSoftware/DnsServer · error · DnsWebServiceException

No such user exists: {actingUsername}

Error message

No such user exists: {actingUsername}

What it means

DnsWebServiceException thrown by GetSessionUser when the session is a ClusterApiToken and the optional 'actingUser' query/form parameter names a user that _authManager.GetUser cannot find. Cluster nodes proxy calls with an acting user; if that user does not exist on this node, the call cannot be attributed and is rejected.

Source

Thrown at DnsServerCore/DnsWebService.cs:2623

            context.Items["session"] = session;

            return true;
        }

        private User GetSessionUser(HttpContext context, bool standardOnly = false)
        {
            UserSession session = context.GetCurrentSession();

            if ((session.Type == UserSessionType.ClusterApiToken) && _clusterManager.ClusterInitialized)
            {
                //proxy call from cluster node 
                string actingUsername = context.Request.GetQueryOrForm("actingUser", null);
                if (actingUsername is null)
                    return session.User;

                User actingUser = _authManager.GetUser(actingUsername);
                if (actingUser is null)
                    throw new DnsWebServiceException("No such user exists: " + actingUsername);

                return actingUser;
            }
            else
            {
                if (standardOnly && (session.Type != UserSessionType.Standard))
                    throw new DnsWebServiceException("Access was denied.");

                return session.User;
            }
        }

        #endregion

        #region tls

        private void StartTlsCertificateUpdateTimer()
        {

View on GitHub (pinned to d0484b6c1e)

Solutions

  1. Ensure the acting user exists on every cluster node (create/replicate the user).
  2. Omit the actingUser parameter to act as the token's own user when appropriate.
  3. Verify the username spelling/case in the request.
  4. Re-sync cluster user data so all nodes agree on the user set.

Example fix

null
Defensive patterns

Strategy: validation

Validate before calling

// Before sending ?actingUser=, confirm the user exists on this node
if (!string.IsNullOrEmpty(actingUser) && _authManager.GetUser(actingUser) is null)
    throw new ArgumentException($"Unknown acting user: {actingUser}");

Type guard

null

Try / catch

catch (DnsWebServiceException ex) when (ex.Message.StartsWith("No such user exists"))
{
    // create/replicate the user, or omit actingUser and retry
}

Prevention

When it happens

Trigger: A cluster API-token call includes ?actingUser=<name> where <name> is not a user on the receiving node. Happens when users were created on one node but not replicated/created on another, or the username is mistyped.

Common situations: User exists on the primary but not on a secondary (or vice versa); user was deleted while a cluster call was in flight; typo in actingUser; partial cluster sync; cross-cluster token misuse.

Related errors


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