{"record":{"id":"4692ff994c91c527","repo":"microsoft/aspire","slug":"invalid-region-specified","errorCode":null,"errorMessage":"Invalid region specified","messagePattern":"Invalid region specified","errorType":"validation","errorClass":"ArgumentException","httpStatus":null,"severity":"error","filePath":"src/Aspire.Hosting.DevTunnels/DevTunnelOptions.cs","lineNumber":79,"sourceCode":"\n    internal string RegionCode =>\n        Region switch\n        {\n            DevTunnelRegion.WestEurope => \"euw\",\n            DevTunnelRegion.UKSouth => \"uks1\",\n            DevTunnelRegion.NorthEurope => \"eun1\",\n            DevTunnelRegion.EastUs => \"use\",\n            DevTunnelRegion.EastUs2 => \"use2\",\n            DevTunnelRegion.WestUs2 => \"usw2\",\n            DevTunnelRegion.WestUs3 => \"usw3\",\n            DevTunnelRegion.CentralIndia => \"inc1\",\n            DevTunnelRegion.SoutheastAsia => \"asse\",\n            DevTunnelRegion.BrazilSouth => \"brs\",\n            DevTunnelRegion.AustraliaCentral => \"auc1\",\n            DevTunnelRegion.AustraliaEast => \"aue\",\n            DevTunnelRegion.JapanEast => \"jpe1\",\n            null => string.Empty,\n            _ => throw new ArgumentException(\"Invalid region specified\", nameof(Region)),\n        };\n\n    internal string ToLoggerString() => $\"{{ Description={Description}, AllowAnonymous={AllowAnonymous}, Labels=[{string.Join(\", \", Labels ?? [])}], Region={Region}, ExpirationHours={ExpirationHours} }}\";\n}\n\n/// <summary>\n/// Options for a dev tunnel port.\n/// </summary>\npublic sealed class DevTunnelPortOptions\n{\n    /// <summary>\n    /// A description for this port within the dev tunnel.\n    /// </summary>\n    public string? Description { get; set; }\n\n    /// <summary>\n    /// Whether to allow anonymous access to this port. If <c>null</c>, defaults to the parent tunnel's setting. Defaults to <c>null</c>.\n    /// </summary>","sourceCodeStart":61,"sourceCodeEnd":97,"githubUrl":"https://github.com/microsoft/aspire/blob/25830f84bd145686607ad00c057b3f84e2e51d43/src/Aspire.Hosting.DevTunnels/DevTunnelOptions.cs#L61-L97","documentation":"DevTunnelOptions.Region only accepts members of the DevTunnelRegion enum (mapped internally to devtunnel's region codes). Any other value, including an out-of-range enum cast, throws ArgumentException('Invalid region specified').","triggerScenarios":"Assigning options.Region = (DevTunnelRegion)123 or any value not defined in DevTunnelRegion when configuring the dev tunnel resource.","commonSituations":"Reading a region string from configuration and casting it blindly to the enum; using Azure region names that devtunnel does not expose; enum drift after package upgrades.","solutions":["Use a defined DevTunnelRegion member (e.g. DevTunnelRegion.USWest, AustraliaEast, JapanEast, BrazilSouth, SoutheastAsia)","Enum.TryParse the config string into DevTunnelRegion and reject unknown values before assignment","Leave Region null to use the service's default region","Check the DevTunnelRegion enum in your package version for the exact member list"],"exampleFix":"// before\noptions.Region = (DevTunnelRegion)\"eastus\"; // invalid cast value -> throws\n// after\nif (!Enum.TryParse<DevTunnelRegion>(configRegion, out var region))\n{\n    throw new InvalidOperationException($\"Unsupported region '{configRegion}'\");\n}\noptions.Region = region;","handlingStrategy":"type-guard","validationCode":"if (!Enum.IsDefined(typeof(DevTunnelRegion), regionValue))\n    throw new InvalidOperationException($\"Region {regionValue} is not supported\");\noptions.Region = regionValue;","typeGuard":"static bool IsDefinedRegion(DevTunnelRegion r) => Enum.IsDefined(typeof(DevTunnelRegion), r);","tryCatchPattern":"try { options.Region = region; }\ncatch (ArgumentException ex) { logger.LogError(ex, \"Unsupported dev tunnel region\"); options.Region = null; }","preventionTips":["Only assign DevTunnelRegion enum members","Enum.TryParse config strings with strict validation","Leave Region null for the default"],"tags":["devtunnels","region","enum"],"backgroundTag":"invalid-enum-value","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"}