Skip to content

[release/13.4] Use KnownConfigNames for resource service endpoint URL with legacy fallback#17571

Merged
davidfowl merged 2 commits into
release/13.4from
backport/pr-17385-to-release/13.4
May 28, 2026
Merged

[release/13.4] Use KnownConfigNames for resource service endpoint URL with legacy fallback#17571
davidfowl merged 2 commits into
release/13.4from
backport/pr-17385-to-release/13.4

Conversation

@aspire-repo-bot
Copy link
Copy Markdown
Contributor

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

Backport of #17385 to release/13.4

/cc @JamesNK

Customer Impact

ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL was never used. Instead a random URL is chosen. A customer could specify the port they want to use, but it's never used.

One impact of this change is some customers might go into a broken state because of bad configuration that was never used before. For example, they have the same ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL value used by multiple app hosts, and they're run at the same time, then they'll get an error that port is in use. They'll need to change the config value.

Testing

E2E and unit tests

Risk

Low

Regression?

Yes, but many releases ago.

JamesNK added 2 commits May 28, 2026 01:12
…llback

Remove hardcoded DOTNET_RESOURCE_SERVICE_ENDPOINT_URL constant from
DashboardServiceHost and use KnownConfigNames.ResourceServiceEndpointUrl
(ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL) with fallback to
KnownConfigNames.Legacy.ResourceServiceEndpointUrl.
Copilot AI review requested due to automatic review settings May 28, 2026 01:12
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

🚀 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 -- 17571

Or

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

@JamesNK JamesNK added the Servicing-consider Issue for next servicing release review label May 28, 2026
@github-actions
Copy link
Copy Markdown
Contributor

CLI E2E Tests failed — 105 passed, 2 failed, 2 unknown (commit 8759de1)

❌ Failed Tests

Status Test Recording Job Artifacts
LatestCliCanStartStableChannelAppHost Recording #78220505447 Logs
LatestCliCanStartStableChannelTypeScriptAppHost Recording #78220505447 Logs
View all recordings
Status Test Recording Job Artifacts
AddPackageInteractiveWhileAppHostRunningDetached Recording #78220506313 Logs
AddPackageWhileAppHostRunningDetached Recording #78220506313 Logs
AgentCommands_AllHelpOutputs_AreCorrect Recording #78220505628 Logs
AgentInitCommand_DefaultSelection_InstallsDefaultSkills Recording #78220505628 Logs
AgentInitCommand_MigratesDeprecatedConfig Recording #78220505628 Logs
AgentMcpListStructuredLogsReturnsLogsFromStarterApp Recording #78220506342 Logs
AgentMcpListStructuredLogsReturnsLogsFromStarterApp_DevLocalhost Recording #78220506342 Logs
AgentMcpListStructuredLogsReturnsLogsFromStarterApp_Isolated Recording #78220506342 Logs
AllPublishMethodsBuildDockerImages Recording #78220506066 Logs
AspireAddAndStartWorkAgainstLegacyAppHostTs Recording #78220506123 Logs
AspireAddPackageVersionToDirectoryPackagesProps Recording #78220506408 Logs
AspireInitSingleFileAppHostRunsViaDotnetRunAppHost Recording #78220505718 Logs
AspireInitWithExistingAppHostDirRecreatesMissingNuGetConfigAndPreservesFiles Recording #78220505681 Logs
AspireInitWithSolutionFileGeneratesAppHostThatBuildsAgainstChannelHive Recording #78220505681 Logs
AspireStartUpdatesStaleTypeScriptAppHostPath Recording #78220506370 Logs
AspireUpdateRemovesAppHostPackageVersionFromDirectoryPackagesProps Recording #78220506408 Logs
AspireUpdateRemovesOrphanAppHostPackageVersionWhenSdkAlreadyCurrent Recording #78220506408 Logs
Banner_DisplayedOnFirstRun Recording #78220506429 Logs
Banner_DisplayedWithExplicitFlag Recording #78220506429 Logs
Banner_NotDisplayedWithNoLogoFlag Recording #78220506429 Logs
CertificatesClean_RemovesCertificates Recording #78220505795 Logs
CertificatesTrust_WithNoCert_CreatesAndTrustsCertificate Recording #78220505795 Logs
CertificatesTrust_WithUntrustedCert_TrustsCertificate Recording #78220505795 Logs
ConfigSetGet_CreatesNestedJsonFormat Recording #78220505941 Logs
CreateAndRunAspireStarterProject Recording #78220505447 Logs
CreateAndRunAspireStarterProjectWithBundle Recording #78220506422 Logs
CreateAndRunEmptyAppHostProject Recording #78220506421 Logs
CreateAndRunJavaEmptyAppHostProject Recording #78220505975 Logs
CreateAndRunJsReactProject Recording #78220506330 Logs
CreateAndRunPythonReactProject Recording #78220506355 Logs
CreateAndRunTypeScriptEmptyAppHostProject Recording #78220505964 Logs
CreateAndRunTypeScriptStarterProject Recording #78220506519 Logs
CreateJavaAppHostWithViteApp Recording #78220506345 Logs
CreateTypeScriptAppHostWithViteApp_AllowsGuestAppPackageManagerToDiffer Recording #78220505766 Logs
CreateTypeScriptAppHostWithViteApp_UsesConfiguredToolchain Recording #78220505766 Logs
DashboardRunWithAgentMcpListTracesReturnsNoTraces Recording #78220506141 Logs
DashboardRunWithAgentMcpListTracesReturnsNoTraces_DevLocalhost Recording #78220506141 Logs
DashboardRunWithOtelTracesReturnsNoTraces Recording #78220506141 Logs
DashboardRunWithOtelTracesReturnsNoTraces_DevLocalhost Recording #78220506141 Logs
DeployK8sBasicApiService Recording #78220506591 Logs
DeployK8sWithExternalHelmChart Recording #78220506122 Logs
DeployK8sWithGarnet Recording #78220506410 Logs
DeployK8sWithMongoDB Recording #78220505846 Logs
DeployK8sWithMySql Recording #78220505844 Logs
DeployK8sWithPostgres Recording #78220505950 Logs
DeployK8sWithRabbitMQ Recording #78220505684 Logs
DeployK8sWithRedis Recording #78220506110 Logs
DeployK8sWithSqlServer Recording #78220506058 Logs
DeployK8sWithValkey Recording #78220506338 Logs
DeployTypeScriptAppToKubernetes Recording #78220505855 Logs
DescribeCommandResolvesReplicaNames Recording #78220506117 Logs
DescribeCommandShowsRunningResources Recording #78220506117 Logs
DetachFormatJsonProducesValidJson Recording #78220505999 Logs
DetachFormatJsonProducesValidJsonWhenRestartingExistingInstance Recording #78220505999 Logs
DoPublishAndDeployListStepsWork Recording #78220505947 Logs
DocsCommand_RendersInteractiveMarkdownFromLocalSource Recording #78220506447 Logs
DoctorCommand_DetectsDeprecatedAgentConfig Recording #78220505628 Logs
DoctorCommand_TypeScriptAppHostReportsMissingConfiguredToolchain Recording #78220505987 Logs
DoctorCommand_WithSslCertDir_ShowsTrusted Recording #78220505987 Logs
DoctorCommand_WithoutSslCertDir_ShowsPartiallyTrusted Recording #78220505987 Logs
GatewayWithoutExternalEndpoint_FailsPublishWithGuidance Recording #78220506147 Logs
GeneratedAspireDevScript_StartsWatchMode_WithConfiguredToolchain Recording #78220505766 Logs
GlobalMigration_HandlesCommentsAndTrailingCommas Recording #78220505941 Logs
GlobalMigration_HandlesMalformedLegacyJson Recording #78220505941 Logs
GlobalMigration_PreservesAllValueTypes Recording #78220505941 Logs
GlobalMigration_SkipsWhenNewConfigExists Recording #78220505941 Logs
GlobalSettings_MigratedFromLegacyFormat Recording #78220505941 Logs
IngressWithoutExternalEndpoint_FailsPublishWithGuidance Recording #78220506147 Logs
InitTypeScriptAppHost_AugmentsExistingViteRepoInWorkspaceSubdirectory Recording #78220505766 Logs
InteractiveCSharpInitCreatesExpectedFiles Recording #78220505719 Logs
InvalidAppHostPathWithComments_IsHealedOnRun Recording #78220505888 Logs
JavaScriptHostingApisRunFromTypeScriptAppHost Recording #78220506066 Logs
LatestCliCanStartStableChannelAppHost Recording #78220505447 Logs
LatestCliCanStartStableChannelTypeScriptAppHost Recording #78220505447 Logs
LegacySettingsMigration_AdjustsRelativeAppHostPath Recording #78220506370 Logs
LogsCommandShowsResourceLogs Recording #78220506317 Logs
OtelLogsReturnsStructuredLogsFromStarterApp Recording #78220506310 Logs
OtelLogsReturnsStructuredLogsFromStarterAppIsolated Recording #78220506310 Logs
PsCommandListsRunningAppHost Recording #78220506155 Logs
PsFormatJsonOutputsOnlyJsonToStdout Recording #78220506155 Logs
PublishJavaScriptPatternsGeneratesExpectedDockerComposeArtifacts Recording #78220506106 Logs
PublishWithConfigureEnvFileUpdatesEnvOutput Recording #78220506106 Logs
PublishWithDockerComposeServiceCallbackSucceeds Recording #78220506106 Logs
PublishWithoutOutputPathUsesAppHostDirectoryDefault Recording #78220506106 Logs
ResourceCommand_FailedExecution_DisplaysAppHostLogPathAndLogContainsEntries Recording #78220506325 Logs
ResourceCommand_SetAndDeleteParameterUpdatesDescribeOutput Recording #78220506325 Logs
RestoreGeneratesSdkFiles Recording #78220506073 Logs
RestoreGeneratesSdkFiles_WithConfiguredToolchain Recording #78220506024 Logs
RestoreRefreshesGeneratedSdkAfterAddingIntegration Recording #78220506024 Logs
RestoreSupportsConfigOnlyHelperPackageAndCrossPackageTypes Recording #78220506207 Logs
RunFromParentDirectory_UsesExistingConfigNearAppHost Recording #78220506290 Logs
RunReportsSyntaxErrorsForDotNetAppHost Recording #78220506406 Logs
RunReportsSyntaxErrorsForTypeScriptAppHost Recording #78220506406 Logs
SecretCrudOnDotNetAppHost Recording #78220506100 Logs
SecretCrudOnTypeScriptAppHost Recording #78220506305 Logs
StagingChannel_ConfigureAndVerifySettings_ThenSwitchChannels Recording #78220505851 Logs
StartAndWaitForTypeScriptSqlServerAppHostWithNativeAssets Recording #78220506052 Logs
StartReportsSyntaxErrorsForDotNetAppHost Recording #78220506406 Logs
StartReportsSyntaxErrorsForTypeScriptAppHost Recording #78220506406 Logs
StopAllAppHostsFromAppHostDirectory Recording #78220505662 Logs
StopJavaPolyglotAppHostUsingApphostDirectory Recording #78220505703 Logs
StopNonInteractiveSingleAppHost Recording #78220505662 Logs
StopTypeScriptPolyglotAppHostUsingApphostDirectory Recording #78220505729 Logs
StopWithNoRunningAppHostExitsSuccessfully Recording #78220506313 Logs
UnAwaitedChainsCompileWithAutoResolvePromises Recording #78220506024 Logs
UpdateProjectChannelToStable_CSharpEmptyAppHost_PreservesAspireConfigChannel Recording #78220506054 Logs
UpdateProjectChannelToStable_CSharpSingleFileInit_PreservesAspireConfigChannel Recording #78220506054 Logs
UpdateProjectChannelToStable_TypeScriptSingleFileInit_PreservesAspireConfigChannel Recording #78220506054 Logs
UpdateProjectChannelToStable_TypeScript_PreviewsStablePackagesAndPreservesChannel Recording #78220506054 Logs

📹 Recordings uploaded automatically from CI run #26548483091

@davidfowl davidfowl merged commit e18fdb8 into release/13.4 May 28, 2026
614 of 620 checks passed
@davidfowl davidfowl deleted the backport/pr-17385-to-release/13.4 branch May 28, 2026 06:11
@microsoft-github-policy-service microsoft-github-policy-service Bot added this to the 13.4 milestone May 28, 2026
@aspire-repo-bot
Copy link
Copy Markdown
Contributor Author

✅ No documentation update needed.

docs_optional → bug_fix_restores_documented_behavior

No gating signals triggered (signal_count == 0). This PR fixes a regression where ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL was silently ignored by the app host — the implementation now reads KnownConfigNames.ResourceServiceEndpointUrl (with a legacy DOTNET_RESOURCE_SERVICE_ENDPOINT_URL fallback). The docs already describe the intended behavior at src/frontend/src/content/docs/app-host/configuration.mdx:

ASPIRE_RESOURCE_SERVICE_ENDPOINT_URL — Configures the address of the resource service hosted by the AppHost. Automatically generated with launchSettings.json to have a random port on localhost.

Since the fix brings the implementation into line with documented behavior (not changing the documented interface), no docs update is needed.

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

Labels

Servicing-consider Issue for next servicing release review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants