Aspire 17 rejects previously accepted empty parameter values; clarify breaking change and dashboard failure
Maintainers usually reply within 2 days
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 48/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- csharp, typescript
Research direction
Start with src/Aspire.Hosting/Orchestrator/ParameterProcessor.cs and src/Aspire.Hosting/ApplicationModel/ParameterResource.cs, especially the value initialization and required parameter validation paths described in the issue. Check how .withOptional() is exposed to TypeScript and how the dashboard reports a dependent resource that is waiting. Done means the intended empty-value behavior is clear, the failure is actionable in the dashboard, and any intentional breaking change has What's New guidance.
Written by the indexing model from the issue text.
Description
Is there an existing issue for this?
- I have searched the existing issues
Describe the bug
Upgrading only the SDK/integrations from 13.6.0-preview.1.26472.4 to 17.0.0-preview.1.26554.19 makes an unchanged, intentionally empty parameter fail validation. The API becomes FailedToStart, and dependent resources remain Waiting. This is changed empty-value semantics, not a newly introduced parameter or missing saved configuration.
Expected Behavior
Preserve previously accepted explicit empty values unless this is an intentional breaking change. If intentional, document it in Aspire 17 What's New with .withOptional() migration guidance. Make the dashboard failure actionable by identifying the offending parameter and its effect on dependent resources, without requiring inspection of API logs.
Steps To Reproduce
Use a TypeScript AppHost with an API resource and supply an intentionally empty parameter:
const selector = await builder.addParameter('optional-selector', { value: '' });
await api.withEnvironment('OPTIONAL_SELECTOR', selector);
This ran successfully with 13.6.0-preview.1.26472.4 (source commit 48996d7d0bf5781305ad04bcc927c68c955dcbc7). Upgrade only the SDK/integrations to 17.0.0-preview.1.26554.19 (source commit 87ef7dfc044526f5b46b6baffcccb9a011da1f7f), leaving parameter declarations unchanged; the API fails to start.
Exceptions (if any)
MissingParameterValueException: Parameter resource 'optional-selector' requires a value.
Aspire doctor output
Not collected.
Anything else?
#18108, merged October 12, 2026 (682f6abc32104286f472f103b9dbb269df8f14ba), is between the installed revisions. Initialization changed from WaitForValueTcs.TrySetResult(value), which accepted empty strings, to SetValueAsync(value). Parameters default to Required=true; required parameters now reject null/empty strings, with .withOptional() as the new opt-out.
- Dominant language
- C#
- Stars
- 6.4k
- Forks
- 1k
- Avg merge
- 3d 3h
- Merged PRs (30d)
- 349
Getting set up
Starts the project's dev container in your browser, under your own GitHub account.
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from microsoft/aspire
-
Aspire.Hosting.Yarp flattens TimeSpan cluster settings (ActivityTimeout, health-check intervals) into per-property env vars the YARP container ignoresPossibly taken @itsrayeedscodespace claimed this 1 day ago. Openarea-integrations
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 2 days
-
Dashboard structured logs toolbar overlaps the resource name and wraps poorly in constrained layoutsOpenarea-dashboard
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 2 days
-
area-dashboard
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
Maintainers usually reply within 2 days
-
area-dashboard
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
Maintainers usually reply within 2 days
-
area-templates
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
Maintainers usually reply within 2 days
All issues in microsoft/aspire
Similar issues
-
Assert.That on a null non-generic IEnumerable throws ArgumentNullException, so IsNull() cannot passOpenbug P2
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day
-
area/automation area/sdk kind/bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
unoplatform/uno.templates#2406 ·
Maintainers usually reply within 1 day
-
bug frontend ui
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
agentic-workflows
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
documentation trivial
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day