{"record":{"id":"4caa23c31cfb7088","repo":"microsoft/aspire","slug":"port-range-start-must-be-between-minport-and-maxport","errorCode":null,"errorMessage":"Port range start must be between {MinPort} and {MaxPort}.","messagePattern":"Port range start must be between (.+?) and (.+?)\\.","errorType":"exception","errorClass":"ArgumentOutOfRangeException","httpStatus":null,"severity":"error","filePath":"src/Aspire.Hosting/Dcp/PortRange.cs","lineNumber":38,"sourceCode":"    public const int MaxPort = 65535;\n\n    /// <summary>\n    /// Returns <see langword=\"true\"/> when <paramref name=\"port\"/> is a usable port number.\n    /// </summary>\n    public static bool IsValidPort(int port)\n    {\n        return port is >= MinPort and <= MaxPort;\n    }\n\n    /// <summary>\n    /// Validates that <paramref name=\"rangeStart\"/> and <paramref name=\"rangeEnd\"/> form a valid,\n    /// non-empty, ordered port range, throwing if not.\n    /// </summary>\n    public static void ValidateRange(int rangeStart, int rangeEnd, string rangeStartParamName, string rangeEndParamName)\n    {\n        if (!IsValidPort(rangeStart))\n        {\n            throw new ArgumentOutOfRangeException(rangeStartParamName, rangeStart, $\"Port range start must be between {MinPort} and {MaxPort}.\");\n        }\n\n        if (!IsValidPort(rangeEnd))\n        {\n            throw new ArgumentOutOfRangeException(rangeEndParamName, rangeEnd, $\"Port range end must be between {MinPort} and {MaxPort}.\");\n        }\n\n        if (rangeStart > rangeEnd)\n        {\n            throw new ArgumentException(\"Port range start must be less than or equal to the range end.\", rangeStartParamName);\n        }\n    }\n}\n","sourceCodeStart":20,"sourceCodeEnd":52,"githubUrl":"https://github.com/microsoft/aspire/blob/25830f84bd145686607ad00c057b3f84e2e51d43/src/Aspire.Hosting/Dcp/PortRange.cs#L20-L52","documentation":"Thrown by PortRange.ValidateRange when the range start falls outside the valid port interval [MinPort, MaxPort]. It is raised as ArgumentOutOfRangeException naming the start parameter, enforcing that port ranges given to the DCP port allocator are well-formed.","triggerScenarios":"Calling ValidateRange (or APIs that accept a port range, e.g. dev-mode port allocation settings) with a rangeStart below MinPort (1) or above MaxPort (65535), such as 0 or -1 or 70000.","commonSituations":"Typo in configured port range (e.g. \"0-1024\"); using 0 meaning 'auto-assign' where a concrete start is required; environment config values misparsed as numbers.","solutions":["Set range start to a value between 1 and 65535 inclusive.","If you intended automatic port assignment, do not supply a fixed range start.","Validate configured ranges at startup with IsValidPort before passing them on."],"exampleFix":"// before\nPortRange.ValidateRange(0, 1024, nameof(start), nameof(end));\n// after\nPortRange.ValidateRange(1, 1024, nameof(start), nameof(end));","handlingStrategy":"validation","validationCode":"if (start is < 1 or > 65535)\n    throw new ArgumentException($\"Port range start {start} must be between 1 and 65535.\");","typeGuard":null,"tryCatchPattern":"try { PortRange.ValidateRange(start, end, nameof(start), nameof(end)); }\ncatch (ArgumentOutOfRangeException ex) when (ex.ParamName == nameof(start)) { /* fix configured start */ }","preventionTips":["Validate port ranges from config at startup with IsValidPort.","Never use 0 as a literal range start; 0 means auto-assign and is not a valid range endpoint.","Parse config values with int.TryParse and range-check immediately."],"tags":["ports","argument-out-of-range","configuration"],"backgroundTag":"value-out-of-range","analyzedSha":"25830f84bd145686607ad00c057b3f84e2e51d43","analyzedAt":"2026-09-16T11:10:06.193Z","contentChangedAt":"2026-09-16T11:10:06.193Z","schemaVersion":2},"datasetVersion":"2026-09-21T09:17:21.228Z"}