File: Program.cs
Web Access
Project: src\playground\AzureAppService\AzureAppService.AppHost\AzureAppService.AppHost.csproj (AzureAppService.AppHost)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Aspire.Hosting.Azure;
using Azure.Provisioning.Storage;
 
var builder = DistributedApplication.CreateBuilder(args);
 
builder.AddAppServiceEnvironment("infra");
 
// Testing secret parameters
var param = builder.AddParameter("secretparam", "fakeSecret", secret: true);
 
// Testing kv secret refs
var cosmosDb = builder.AddAzureCosmosDB("account")
                      .RunAsEmulator(c => c.WithLifetime(ContainerLifetime.Persistent));
 
cosmosDb.AddCosmosDatabase("db");
 
// Testing managed identity
var storage = builder.AddAzureStorage("storage")
                     .ConfigureInfrastructure(infra =>
                     {
                         var storage = infra.GetProvisionableResources().OfType<StorageAccount>().Single();
                         storage.AllowBlobPublicAccess = false;
                     })
                     .RunAsEmulator(c => c.WithLifetime(ContainerLifetime.Persistent));
var blobs = storage.AddBlobs("blobs");
 
// Testing projects
builder.AddProject<Projects.AzureAppService_ApiService>("api")
       .WithExternalHttpEndpoints()
       .WithReference(blobs)
       .WithRoleAssignments(storage, StorageBuiltInRole.StorageBlobDataContributor)
       .WithReference(cosmosDb)
       .WithEnvironment("VALUE", param)
       .WithEnvironment(context =>
       {
           if (context.Resource.TryGetLastAnnotation<AppIdentityAnnotation>(out var identity))
           {
               context.EnvironmentVariables["AZURE_PRINCIPAL_NAME"] = identity.IdentityResource.PrincipalName;
           }
       });
 
#if !SKIP_DASHBOARD_REFERENCE
// This project is only added in playground projects to support development/debugging
// of the dashboard. It is not required in end developer code. Comment out this code
// or build with `/p:SkipDashboardReference=true`, to test end developer
// dashboard launch experience, Refer to Directory.Build.props for the path to
// the dashboard binary (defaults to the Aspire.Dashboard bin output in the
// artifacts dir).
builder.AddProject<Projects.Aspire_Dashboard>(KnownResourceNames.AspireDashboard);
#endif
 
builder.Build().Run();