{"record":{"id":"27e46d48fd696a4f","repo":"TechnitiumSoftware/DnsServer","slug":"username-length-cannot-exceed-255-characters","errorCode":null,"errorMessage":"Username length cannot exceed 255 characters.","messagePattern":"Username length cannot exceed 255 characters\\.","errorType":"validation","errorClass":"ArgumentException","httpStatus":null,"severity":"error","filePath":"DnsServerCore/Auth/User.cs","lineNumber":179,"sourceCode":"            user._ssoIdentifier = ssoIdentifier;\n\n            return user;\n        }\n\n        public static bool IsUsernameValid(string username, bool throwException = false)\n        {\n            if (string.IsNullOrWhiteSpace(username))\n            {\n                if (throwException)\n                    throw new ArgumentException(\"Username cannot be null or empty.\", nameof(Username));\n\n                return false;\n            }\n\n            if (username.Length > 255)\n            {\n                if (throwException)\n                    throw new ArgumentException(\"Username length cannot exceed 255 characters.\", nameof(Username));\n\n                return false;\n            }\n\n            foreach (char c in username)\n            {\n                if ((c >= 97) && (c <= 122)) //[a-z]\n                    continue;\n\n                if ((c >= 65) && (c <= 90)) //[A-Z]\n                    continue;\n\n                if ((c >= 48) && (c <= 57)) //[0-9]\n                    continue;\n\n                if (c == '@')\n                    continue;\n","sourceCodeStart":161,"sourceCodeEnd":197,"githubUrl":"https://github.com/TechnitiumSoftware/DnsServer/blob/d0484b6c1e7439cdc53d67d81e9c876cda2ad756/DnsServerCore/Auth/User.cs#L161-L197","documentation":"Thrown by User.IsUsernameValid(username, throwException: true) when the username is longer than 255 characters (after the null/empty check passes). It is an ArgumentException (parameter Username) enforcing the configured storage width for usernames.","triggerScenarios":"Calling IsUsernameValid(longUsername, true), or a create/rename path that delegates to it, with a username over 255 chars.","commonSituations":"A UI without a maxlength on the username field; an automated provisioner that builds usernames from long email/UPN values; a migration that did not trim source identifiers.","solutions":["Shorten the username to <= 255 characters.","Enforce client-side maxlength and server-side validation on the username field.","If using email-as-username, truncate or map long addresses to a shorter local identifier."],"exampleFix":"// before\nUser.IsUsernameValid(username, throwException: true);\n\n// after\nif (username?.Length > 255)\n    return BadRequest(\"Username length cannot exceed 255 characters.\");","handlingStrategy":"validation","validationCode":"if (username is null || username.Length > 255)\n    return BadRequest(\"Username length cannot exceed 255 characters.\");","typeGuard":null,"tryCatchPattern":"try { User.IsUsernameValid(username, throwException: true); }\ncatch (ArgumentException ex) when (ex.ParamName == \"Username\" && ex.Message.Contains(\"255\"))\n{ return BadRequest(ex.Message); }","preventionTips":["Set a maxlength on the username input in the UI.","Validate length server-side before validating characters.","Map long email/UPN identifiers to shorter local usernames."],"tags":["auth","user-management","validation","length-limit"],"backgroundTag":null,"analyzedSha":"d0484b6c1e7439cdc53d67d81e9c876cda2ad756","analyzedAt":"2026-08-13T22:57:35.508Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}