{"record":{"id":"d3f7913bfa0df969","repo":"microsoft/aspire","slug":"port-range-end-must-be-between-minport-and-maxport","errorCode":null,"errorMessage":"Port range end must be between {MinPort} and {MaxPort}.","messagePattern":"Port range end must be between (.+?) and (.+?)\\.","errorType":"exception","errorClass":"ArgumentOutOfRangeException","httpStatus":null,"severity":"error","filePath":"src/Aspire.Hosting/Dcp/PortRange.cs","lineNumber":43,"sourceCode":"    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":25,"sourceCodeEnd":52,"githubUrl":"https://github.com/microsoft/aspire/blob/25830f84bd145686607ad00c057b3f84e2e51d43/src/Aspire.Hosting/Dcp/PortRange.cs#L25-L52","documentation":"Thrown by PortRange.ValidateRange when the range end falls outside the valid port interval [MinPort, MaxPort]. Raised as ArgumentOutOfRangeException naming the end parameter, mirroring the start validation.","triggerScenarios":"Calling ValidateRange with a rangeEnd < 1 or > 65535, e.g. ValidateRange(8000, 0) or ValidateRange(8000, 70000).","commonSituations":"Hand-edited port range configuration with an invalid upper bound; computing the end as start+size where size overflowed or was 0/negative leading to an invalid end.","solutions":["Set range end to a value between 1 and 65535 inclusive.","Ensure the end is computed as start + size - 1 with a positive size, then clamped to 65535.","Validate the configured range with IsValidPort before calling APIs that take a range."],"exampleFix":"// before\nPortRange.ValidateRange(8000, 0, nameof(start), nameof(end));\n// after\nPortRange.ValidateRange(8000, 8100, nameof(start), nameof(end));","handlingStrategy":"validation","validationCode":"if (end is < 1 or > 65535)\n    throw new ArgumentException($\"Port range end {end} 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(end)) { /* fix configured end */ }","preventionTips":["Compute end as start + size - 1 and clamp to 65535.","Validate both endpoints of any user-supplied range before use.","Document expected range format (start-end, both within 1-65535) in config docs."],"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"}