-
Notifications
You must be signed in to change notification settings - Fork 724
Description
Is there an existing issue for this?
- I have searched the existing issues
Describe the bug
When running azd init against an Aspire distributed application that includes a Parameter with no default value, the initialization fails if the configuration key for that parameter is missing. The error indicates a MissingParameterValueException is thrown and the distributed application cannot be published.
Sample code:
var builder = DistributedApplication.CreateBuilder(args);
var externalServiceUrl = builder.AddParameter("externalServiceUrl");
var externalService = builder.AddExternalService("external-service", externalServiceUrl);
builder.AddProject<Projects.ParameterTest_Web>("webfrontend")
.WithEnvironment("EXTERNAL_SERVICE", externalService);
builder.Build().Run();Command:
azd init
Expected Behavior
I expected azd init to succeed or prompt for the missing parameter, rather than fail with a runtime exception. Ideally, the tool should either require the configuration key to be present or guide the user to supply a value, instead of crashing.
Steps To Reproduce
- Create an Aspire distributed app with a parameter with no default value, as shown above.
- Run
azd initin the app directory. - Observe the failure and exception output.
Exceptions (if any)
Aspire.Hosting.MissingParameterValueException: Parameter resource could not be used because configuration key 'Parameters:externalServiceUrl' is missing and the Parameter has no default value.
Full stack trace:
Aspire.Hosting.MissingParameterValueException: Parameter resource could not be used because configuration key 'Parameters:externalServiceUrl' is missing and the Parameter has no default value.
at Aspire.Hosting.ParameterResourceBuilderExtensions.GetParameterValue(ConfigurationManager configuration, String name, ParameterDefault parameterDefault, String configurationKey) in /_/src/Aspire.Hosting/ParameterResourceBuilderExtensions.cs:line 207
at Aspire.Hosting.ParameterResourceBuilderExtensions.<>c__DisplayClass0_0.<AddParameter>b__0(ParameterDefault parameterDefault) in /_/src/Aspire.Hosting/ParameterResourceBuilderExtensions.cs:line 32
at Aspire.Hosting.ApplicationModel.ParameterResource.<.ctor>b__3_0() in /_/src/Aspire.Hosting/ApplicationModel/ParameterResource.cs:line 27
at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)
at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)
at System.Lazy`1.CreateValue()
at Aspire.Hosting.ApplicationModel.ParameterResource.get_ValueInternal() in /_/src/Aspire.Hosting/ApplicationModel/ParameterResource.cs:line 36
at Aspire.Hosting.ApplicationModel.ParameterResource.GetValueAsync(CancellationToken cancellationToken) in /_/src/Aspire.Hosting/ApplicationModel/ParameterResource.cs:line 87
at Aspire.Hosting.ResourceBuilderExtensions.<>c__DisplayClass8_0`1.<<WithEnvironment>b__0>d.MoveNext() in /_/src/Aspire.Hosting/ResourceBuilderExtensions.cs:line 182
--- End of stack trace from previous location ---
at Aspire.Hosting.ApplicationModel.ResourceExtensions.ProcessEnvironmentVariableValuesAsync(IResource resource, DistributedApplicationExecutionContext executionContext, Action`4 processValue, ILogger logger, String containerHostName, CancellationToken cancellationToken) in /_/src/Aspire.Hosting/ApplicationModel/ResourceExtensions.cs:line 352
at Aspire.Hosting.Publishing.ManifestPublishingContext.WriteEnvironmentVariablesAsync(IResource resource) in /_/src/Aspire.Hosting/Publishing/ManifestPublishingContext.cs:line 490
at Aspire.Hosting.Publishing.ManifestPublishingContext.WriteProjectAsync(ProjectResource project) in /_/src/Aspire.Hosting/Publishing/ManifestPublishingContext.cs:line 177
at Aspire.Hosting.Publishing.ManifestPublishingContext.<>c__DisplayClass20_0.<<WriteResourceAsync>g__WriteResourceObjectAsync|1>d`1.MoveNext() in /_/src/Aspire.Hosting/Publishing/ManifestPublishingContext.cs:line 129
--- End of stack trace from previous location ---
at Aspire.Hosting.Publishing.ManifestPublishingContext.WriteResourceAsync(IResource resource) in /_/src/Aspire.Hosting/Publishing/ManifestPublishingContext.cs:line 107
at Aspire.Hosting.Publishing.ManifestPublishingContext.WriteModel(DistributedApplicationModel model, CancellationToken cancellationToken) in /_/src/Aspire.Hosting/Publishing/ManifestPublishingContext.cs:line 79
at Aspire.Hosting.Publishing.ManifestPublisher.WriteManifestAsync(DistributedApplicationModel model, Utf8JsonWriter jsonWriter, CancellationToken cancellationToken) in /_/src/Aspire.Hosting/Publishing/ManifestPublisher.cs:line 67
at Aspire.Hosting.Publishing.ManifestPublisher.PublishInternalAsync(DistributedApplicationModel model, CancellationToken cancellationToken) in /_/src/Aspire.Hosting/Publishing/ManifestPublisher.cs:line 55
at Aspire.Hosting.Publishing.ManifestPublisher.PublishAsync(DistributedApplicationModel model, CancellationToken cancellationToken) in /_/src/Aspire.Hosting/Publishing/ManifestPublisher.cs:line 23
at Aspire.Hosting.DistributedApplicationRunner.ExecuteAsync(CancellationToken stoppingToken) in /_/src/Aspire.Hosting/DistributedApplicationRunner.cs:line 41
fail: Microsoft.Extensions.Hosting.Internal.Host[11]
Hosting failed to start
.NET Version info
No response
Anything else?
No response