Skip to content

[release/13.4] Accept dev localhost resource service URLs#17644

Merged
davidfowl merged 3 commits into
release/13.4from
backport/pr-17639-to-release/13.4
May 29, 2026
Merged

[release/13.4] Accept dev localhost resource service URLs#17644
davidfowl merged 3 commits into
release/13.4from
backport/pr-17639-to-release/13.4

Conversation

@aspire-repo-bot
Copy link
Copy Markdown
Contributor

@aspire-repo-bot aspire-repo-bot Bot commented May 29, 2026

Backport of #17639 to release/13.4

/cc @danegsta

Fixes #17659

Customer Impact

We rejected polyglot apphosts with *.localhost domains (as compared to explicit localhost domains) when doing aspire run.

Testing

Smoke tests and new E2E test coverage

Risk

Low, it's a simple extra domain check

Regression?

Yes - in 13.4

Copilot AI review requested due to automatic review settings May 29, 2026 01:55
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 29, 2026

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.sh | bash -s -- 17644

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://raw.githubusercontent.com/microsoft/aspire/main/eng/scripts/get-aspire-cli-pr.ps1) } 17644"

danegsta and others added 2 commits May 29, 2026 04:35
Allow DashboardServiceHost to treat RFC-reserved .localhost subdomains as local resource service endpoints so polyglot AppHosts scaffolded with *.dev.localhost can run.

Add unit coverage for local endpoint recognition and a CLI E2E regression test that scaffolds and runs an Express/React polyglot AppHost with dev-localhost URLs.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: danegsta <50252651+danegsta@users.noreply.github.com>
@aspire-repo-bot aspire-repo-bot Bot force-pushed the backport/pr-17639-to-release/13.4 branch from 10d1d0e to 0bdeedb Compare May 29, 2026 04:35
Adapt the backported polyglot dev-localhost CLI E2E test to the release/13.4 test harness, which does not have CliE2ETestHelpers.StartRun.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@github-actions
Copy link
Copy Markdown
Contributor

Re-running the failed jobs in the CI workflow for this pull request because 1 job was identified as retry-safe transient failures in the CI run attempt.
GitHub was asked to rerun all failed jobs for that attempt, and the rerun is being tracked in the rerun attempt.
The job links below point to the failed attempt jobs that matched the retry-safe transient failure rules.

@github-actions
Copy link
Copy Markdown
Contributor

CLI E2E Tests unknown — 108 passed, 0 failed, 2 unknown (commit 95ea9c7)

View all recordings
Status Test Recording Job Artifacts
AddPackageInteractiveWhileAppHostRunningDetached Recording #78496098513 Logs
AddPackageWhileAppHostRunningDetached Recording #78496098513 Logs
AgentCommands_AllHelpOutputs_AreCorrect Recording #78496098562 Logs
AgentInitCommand_DefaultSelection_InstallsDefaultSkills Recording #78496098562 Logs
AgentInitCommand_MigratesDeprecatedConfig Recording #78496098562 Logs
AgentMcpListStructuredLogsReturnsLogsFromStarterApp Recording #78496098354 Logs
AgentMcpListStructuredLogsReturnsLogsFromStarterApp_DevLocalhost Recording #78496098354 Logs
AgentMcpListStructuredLogsReturnsLogsFromStarterApp_Isolated Recording #78496098354 Logs
AllPublishMethodsBuildDockerImages Recording #78496097663 Logs
AspireAddAndStartWorkAgainstLegacyAppHostTs Recording #78496097846 Logs
AspireAddPackageVersionToDirectoryPackagesProps Recording #78496098539 Logs
AspireInitSingleFileAppHostRunsViaDotnetRunAppHost Recording #78496097941 Logs
AspireInitWithExistingAppHostDirRecreatesMissingNuGetConfigAndPreservesFiles Recording #78496097589 Logs
AspireInitWithSolutionFileGeneratesAppHostThatBuildsAgainstChannelHive Recording #78496097589 Logs
AspireStartUpdatesStaleTypeScriptAppHostPath Recording #78496097731 Logs
AspireUpdateRemovesAppHostPackageVersionFromDirectoryPackagesProps Recording #78496098539 Logs
AspireUpdateRemovesOrphanAppHostPackageVersionWhenSdkAlreadyCurrent Recording #78496098539 Logs
Banner_DisplayedOnFirstRun Recording #78496098122 Logs
Banner_DisplayedWithExplicitFlag Recording #78496098122 Logs
Banner_NotDisplayedWithNoLogoFlag Recording #78496098122 Logs
CertificatesClean_RemovesCertificates Recording #78496097498 Logs
CertificatesTrust_WithNoCert_CreatesAndTrustsCertificate Recording #78496097498 Logs
CertificatesTrust_WithUntrustedCert_TrustsCertificate Recording #78496097498 Logs
ConfigSetGet_CreatesNestedJsonFormat Recording #78496098493 Logs
CreateAndRunAspireStarterProject Recording #78496097668 Logs
CreateAndRunAspireStarterProjectWithBundle Recording #78496097884 Logs
CreateAndRunEmptyAppHostProject Recording #78496098012 Logs
CreateAndRunJavaEmptyAppHostProject Recording #78496097950 Logs
CreateAndRunJsReactProject Recording #78496098284 Logs
CreateAndRunPolyglotAppHostWithDevLocalhostUrls Recording #78496097668 Logs
CreateAndRunPythonReactProject Recording #78496097604 Logs
CreateAndRunTypeScriptEmptyAppHostProject Recording #78496097887 Logs
CreateAndRunTypeScriptStarterProject Recording #78496098500 Logs
CreateJavaAppHostWithViteApp Recording #78496097461 Logs
CreateTypeScriptAppHostWithViteApp_AllowsGuestAppPackageManagerToDiffer Recording #78496097512 Logs
CreateTypeScriptAppHostWithViteApp_UsesConfiguredToolchain Recording #78496097512 Logs
DashboardRunWithAgentMcpListTracesReturnsNoTraces Recording #78496097602 Logs
DashboardRunWithAgentMcpListTracesReturnsNoTraces_DevLocalhost Recording #78496097602 Logs
DashboardRunWithOtelTracesReturnsNoTraces Recording #78496097602 Logs
DashboardRunWithOtelTracesReturnsNoTraces_DevLocalhost Recording #78496097602 Logs
DeployK8sBasicApiService Recording #78496097532 Logs
DeployK8sWithExternalHelmChart Recording #78496098291 Logs
DeployK8sWithGarnet Recording #78496097693 Logs
DeployK8sWithMongoDB Recording #78496098484 Logs
DeployK8sWithMySql Recording #78496097635 Logs
DeployK8sWithPostgres Recording #78496097855 Logs
DeployK8sWithRabbitMQ Recording #78496098518 Logs
DeployK8sWithRedis Recording #78496097544 Logs
DeployK8sWithSqlServer Recording #78496098463 Logs
DeployK8sWithValkey Recording #78496097818 Logs
DeployTypeScriptAppToKubernetes Recording #78496097591 Logs
DescribeCommandResolvesReplicaNames Recording #78496097881 Logs
DescribeCommandShowsRunningResources Recording #78496097881 Logs
DetachFormatJsonProducesValidJson Recording #78496098473 Logs
DetachFormatJsonProducesValidJsonWhenRestartingExistingInstance Recording #78496098473 Logs
DoPublishAndDeployListStepsWork Recording #78496098475 Logs
DocsCommand_RendersInteractiveMarkdownFromLocalSource Recording #78496097677 Logs
DoctorCommand_DetectsDeprecatedAgentConfig Recording #78496098562 Logs
DoctorCommand_TypeScriptAppHostReportsMissingConfiguredToolchain Recording #78496098444 Logs
DoctorCommand_WithSslCertDir_ShowsTrusted Recording #78496098444 Logs
DoctorCommand_WithoutSslCertDir_ShowsPartiallyTrusted Recording #78496098444 Logs
GatewayWithoutExternalEndpoint_FailsPublishWithGuidance Recording #78496097667 Logs
GeneratedAspireDevScript_StartsWatchMode_WithConfiguredToolchain Recording #78496097512 Logs
GlobalMigration_HandlesCommentsAndTrailingCommas Recording #78496098493 Logs
GlobalMigration_HandlesMalformedLegacyJson Recording #78496098493 Logs
GlobalMigration_PreservesAllValueTypes Recording #78496098493 Logs
GlobalMigration_SkipsWhenNewConfigExists Recording #78496098493 Logs
GlobalSettings_MigratedFromLegacyFormat Recording #78496098493 Logs
IngressWithoutExternalEndpoint_FailsPublishWithGuidance Recording #78496097667 Logs
InitTypeScriptAppHost_AugmentsExistingViteRepoInWorkspaceSubdirectory Recording #78496097512 Logs
InteractiveCSharpInitCreatesExpectedFiles Recording #78496098069 Logs
InvalidAppHostPathWithComments_IsHealedOnRun Recording #78496097715 Logs
JavaScriptHostingApisRunFromTypeScriptAppHost Recording #78496097663 Logs
LatestCliCanStartStableChannelAppHost Recording #78496097668 Logs
LatestCliCanStartStableChannelTypeScriptAppHost Recording #78496097668 Logs
LegacySettingsMigration_AdjustsRelativeAppHostPath Recording #78496097731 Logs
LogsCommandShowsResourceLogs Recording #78496098026 Logs
OtelLogsReturnsStructuredLogsFromStarterApp Recording #78496098166 Logs
OtelLogsReturnsStructuredLogsFromStarterAppIsolated Recording #78496098166 Logs
PsCommandListsRunningAppHost Recording #78496097985 Logs
PsFormatJsonOutputsOnlyJsonToStdout Recording #78496097985 Logs
PublishJavaScriptPatternsGeneratesExpectedDockerComposeArtifacts Recording #78496098520 Logs
PublishWithConfigureEnvFileUpdatesEnvOutput Recording #78496098520 Logs
PublishWithDockerComposeServiceCallbackSucceeds Recording #78496098520 Logs
PublishWithoutOutputPathUsesAppHostDirectoryDefault Recording #78496098520 Logs
ResourceCommand_FailedExecution_DisplaysAppHostLogPathAndLogContainsEntries Recording #78496098315 Logs
ResourceCommand_SetAndDeleteParameterUpdatesDescribeOutput Recording #78496098315 Logs
RestoreGeneratesSdkFiles Recording #78496098571 Logs
RestoreGeneratesSdkFiles_WithConfiguredToolchain Recording #78496098538 Logs
RestoreRefreshesGeneratedSdkAfterAddingIntegration Recording #78496098538 Logs
RestoreSupportsConfigOnlyHelperPackageAndCrossPackageTypes Recording #78496098030 Logs
RunFromParentDirectory_UsesExistingConfigNearAppHost Recording #78496097904 Logs
RunReportsSyntaxErrorsForDotNetAppHost Recording #78496097705 Logs
RunReportsSyntaxErrorsForTypeScriptAppHost Recording #78496097705 Logs
SecretCrudOnDotNetAppHost Recording #78496097665 Logs
SecretCrudOnTypeScriptAppHost Recording #78496098293 Logs
StagingChannel_ConfigureAndVerifySettings_ThenSwitchChannels Recording #78496098024 Logs
StartAndWaitForTypeScriptSqlServerAppHostWithNativeAssets Recording #78496098553 Logs
StartReportsSyntaxErrorsForDotNetAppHost Recording #78496097705 Logs
StartReportsSyntaxErrorsForTypeScriptAppHost Recording #78496097705 Logs
StopAllAppHostsFromAppHostDirectory Recording #78496098112 Logs
StopJavaPolyglotAppHostUsingApphostDirectory Recording #78496098515 Logs
StopNonInteractiveSingleAppHost Recording #78496098112 Logs
StopTypeScriptPolyglotAppHostUsingApphostDirectory Recording #78496097524 Logs
StopWithNoRunningAppHostExitsSuccessfully Recording #78496098513 Logs
UnAwaitedChainsCompileWithAutoResolvePromises Recording #78496098538 Logs
UpdateProjectChannelToStable_CSharpEmptyAppHost_PreservesAspireConfigChannel Recording #78496097939 Logs
UpdateProjectChannelToStable_CSharpSingleFileInit_PreservesAspireConfigChannel Recording #78496097939 Logs
UpdateProjectChannelToStable_TypeScriptSingleFileInit_PreservesAspireConfigChannel Recording #78496097939 Logs
UpdateProjectChannelToStable_TypeScript_PreviewsStablePackagesAndPreservesChannel Recording #78496097939 Logs

📹 Recordings uploaded automatically from CI run #26633256897

@davidfowl davidfowl merged commit 34be339 into release/13.4 May 29, 2026
615 of 619 checks passed
@davidfowl davidfowl deleted the backport/pr-17639-to-release/13.4 branch May 29, 2026 14:13
@microsoft-github-policy-service microsoft-github-policy-service Bot added this to the 13.4 milestone May 29, 2026
@aspire-repo-bot
Copy link
Copy Markdown
Contributor Author

✅ No documentation update needed.

docs_optional → bug_fix_restores_documented_behavior

No signals were triggered (signal_count == 0). The only changed source file is src/Aspire.Hosting/Dashboard/DashboardServiceHost.cs (plus two test files), which is an internal fix that expands the local-endpoint check to accept *.dev.localhost hostnames in addition to 127.0.0.1 / ::1 / localhost. This fixes a regression in 13.4 where polyglot app hosts using ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL with *.dev.localhost domains were incorrectly rejected when running aspire run. The existing docs describe aspire run working with polyglot app hosts — this patch restores that documented behavior; no new user-facing surface was introduced.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants