Skip to content

Instantly share code, notes, and snippets.

@davidfowl
Created February 1, 2026 05:38
Show Gist options
  • Select an option

  • Save davidfowl/770d3b720f3dc85f4dfcef0f41476606 to your computer and use it in GitHub Desktop.

Select an option

Save davidfowl/770d3b720f3dc85f4dfcef0f41476606 to your computer and use it in GitHub Desktop.
Aspire Documentation Gaps - Discord Feedback Analysis

[Discord Feedback] App Model API gaps - CORS, console apps, naming, networking

Summary

Based on analysis of 20,415 Discord messages + 147 #help threads from the Aspire community (April 2025 - February 2026), several App Model API features lack documentation.

Missing Documentation

1. CORS Configuration (10+ questions)

Current State: Zero documentation

Customer Quotes:

"Wait.. hold on, hold on, hold on, hold on, hold on.... What? do we need to configure cors?"

"I seem to be having some CORS issues with a test deployment. Would this also have to be something I configure somewhere in my project?"

Requested Documentation:

  • When CORS configuration is needed with Aspire
  • How to configure CORS for dev vs prod
  • Common CORS issues and solutions

2. Console Application Integration (17 questions)

Customer Quotes:

"if I want to hook up a Console project with Aspire, so that it can still (maybe?) use service discovery, service defaults, etc. with Aspire resources... is that possible?"

"Colleague asked how to start a console app with aspire. I got it to connect to another resource (redis) and write a kv.... but then was wondering how to 'launch the console window' so one could interact with Console.Readline."

Requested Documentation:

  • Adding Console apps to Aspire AppHost
  • Service discovery in Console apps (non-ASP.NET Core)
  • Background worker / hosted service patterns
  • Interactive console apps with stdin/stdout

3. Resource Naming Conventions

Customer Quote:

"How does WithReference treat names that have dashes? e.g. AddWhatever("my-service") and then will it be like MY_SERVICE_[PROPERTY]? Or MY-SERVICE_[PROPERTY]?"

Requested Documentation:

  • How resource names map to environment variables
  • Dashes → underscores transformation rules
  • Best practices for naming resources

4. Network Binding (0.0.0.0 / LAN Access)

From #help thread: "How to bind services to 0.0.0.0 for LAN access?"

Requested Documentation:

  • Exposing services to external network
  • Binding to 0.0.0.0 vs localhost
  • LAN development scenarios

5. Container-to-Host Networking

Customer Quote:

"I'm struggling to get endpoints resolved in the context of a container. If I use KnownNetworkIdentifiers.LocalhostNetwork, it always comes back with localhost not host.docker.internal"

From #help: "Containers can't reach localhost SQL"

Requested Documentation:

  • host.docker.internal behavior
  • KnownNetworkIdentifiers enum usage
  • Container-to-localhost SQL Server connectivity

Data Source

  • Discord channels: #💫│general, #🔵│azure, #🔨│building-resources
  • Help threads: 147 analyzed from #🆘│help
  • Total messages: 20,415
  • Date range: April 2025 - February 2026

[Discord Feedback] Deployment & CI/CD documentation gaps

Summary

Based on analysis of 20,415 Discord messages + 147 #help threads (April 2025 - February 2026).

Question counts:

Topic Questions
Azure DevOps/Pipelines 87
azd integration 75
ACA/Container Apps 70
Kubernetes 54
aspire deploy 44
Container Registry 42
GitHub Actions 22

Docs That Exist

Slug Title Coverage
deploy-using-the-aspire-cli Deploy using the Aspire CLI ✅ Basic ACA deployment
building-custom-deployment-pipelines Building custom deployment pipelines ✅ Image building, progress reporting
publishing-and-deployment Publishing and deployment ✅ Overview
deployment-manifest-format Deployment manifest format ✅ Manifest structure
kubernetes-integration Kubernetes integration ⚠️ Hosting only, not publishing

Gaps in Existing Docs

1. aspire deploy - Missing Topics (44 questions)

Customer Quotes:

"how does aspire deploy handle WaitFor? for example, if i set a database migration service to run before an api and frontend, how is this handled when deploying to i.e. azure?"

"did aspire deploy not get resource specific deploys like azd?"

Missing from deploy-using-the-aspire-cli:

  • WaitFor behavior during deployment (vs local dev)
  • Selective/resource-specific deployment
  • aspire deploy vs azd comparison table
  • Parameters file format and examples (partially mentioned but unclear per user feedback)
  • Handling dev-only resources during deploy

2. CI/CD Integration - No Dedicated Docs (109 questions)

Verified: grep -i "github action\|azure devops\|ci\|cd\|pipeline" aspire-docs-list.txt returns no dedicated CI/CD guide.

Customer Quotes:

"Trying to work my way through some issues using the aspire cli in my Azure DevOps pipeline."

"Tests pass locally but fail in Azure DevOps because Cosmos uses principalType 'User' but CI uses Service Principal"

From #help threads:

  • Tests run indefinitely in GitHub Actions
  • CLI output formatting issues in Jenkins

Action Items:

  • Azure DevOps pipeline setup guide
  • GitHub Actions workflow examples
  • Service Principal vs User principal for Azure resources in CI
  • Running aspire CLI in detached mode for E2E tests
  • CI environment compatibility (timeouts, terminal output)

3. Kubernetes Publishing - Incomplete (54 questions)

Verified: kubernetes-integration exists but covers hosting only, not publishing/deployment.

Customer Quotes:

"I was wondering if anyone has considered an option where you could orchestrate resources in an actual Kubernetes cluster running locally (with MiniKube, Kind, Docker Desktop)"

From #help threads:

  • "How to get Kubernetes integration to use container registry image names?"
  • AddKubernetesEnvironment() mentioned but undocumented

Action Items:

  • AddKubernetesEnvironment() documentation
  • Helm chart generation patterns
  • Local Kubernetes (MiniKube, Kind) workflows
  • cert-manager integration
  • Aspirate mention/comparison

4. Container Registry / Airgapped (42 questions)

Verified: azure-container-registry-integration exists for ACR, but no private/airgapped patterns.

Customer Quotes:

"Is there an easy way to override container registry hostnames? Internally we use a jfrog artifactory proxy for mcr.microsoft.com."

"Could someone have a look at dotnet/aspire#14128? This would help us to support container registry mirrors in airgapped environments."

Action Items:

  • Private/internal registry configuration
  • mcr.microsoft.com proxy/mirror patterns
  • Airgapped environment setup
  • Enterprise registry authentication patterns

Data Source

  • Discord channels: #💫│general, #🔵│azure, #🔨│building-resources
  • Help threads: 147 from #🆘│help
  • Total messages: 20,415
  • Date range: April 2025 - February 2026
  • Verified against: aspire-list_docs and aspire-search_docs

[Discord Feedback] Integration-specific documentation gaps

Summary

Based on analysis of 20,415 Discord messages + 147 #help threads (April 2025 - February 2026).

Total integration questions: 446


Docs Verified via list_docs

Integration Doc Exists Slug
JavaScript javascript-integration
Python python-integration
PostgreSQL azure-postgresql-*
Dapr dapr-integration
YARP yarp-integration
Redis redis-integration
Keycloak keycloak-integration
MAUI net-maui-integration
WPF/WinForms None

1. JavaScript/Vite/Node (102 questions)

Doc exists: javascript-integration

Gaps in existing doc:

Customer Quotes:

"Has anyone done monorepo/turborepo with Aspire? Wondering if it's possible to do a pnpm dev on the root of the monorepo and host / expose multiple apps within"

"I have react+vite in the frontend calling a minimal API. I can't get the API URL to work -always undefined-"

Action Items:

  • Monorepo/Turborepo patterns
  • Passing API URLs to Vite apps (VITE_API_BASE_URL)
  • TypeScript debugging (from #help: "How to debug TypeScript/Node.js apps in Aspire?")
  • Docker build troubleshooting for JS apps

2. Python (47 questions)

Doc exists: python-integration

Gaps:

Customer Quotes:

"Ok. So I can force https in the python app in publish mode today to make it work without my hack?"

"Even for internal requests? I don't actually need the python api exposed publicly"

Action Items:

  • HTTPS/certificate configuration for Python apps
  • Internal vs external service exposure
  • Deployment patterns (aspire deploy with Python)
  • Docker build troubleshooting

3. Dapr (43 questions)

Doc exists: dapr-integration ✅ (local dev only)

Gaps:

Customer Quotes:

"I just redeployed my container apps that have WithDaprSidecar but the Azure portal now shows Dapr is disabled - what gives?"

"when using AddDaprStateStore, how do I configure it as an ActorStateStore?"

From #help:

"How to configure Dapr sidecars with PublishAsAzureContainerApp in Aspire 13?"

Action Items:

  • Azure Container Apps + Dapr deployment
  • Dapr settings preservation on redeploy
  • Actor state store configuration
  • Migration from Aspire 9 to 13 for Dapr

4. YARP (41 questions)

Doc exists: yarp-integration

Gaps:

Customer Quote:

"Just updated to Aspire 13.1 and tried using AddYarp with an https endpoint. My Yarp configuration proxies calls to an ASP.NET Core Razor Pages site that is using https as well."

From #help:

"Azure + Yarp + JavaScriptApp - Container app context not found"

Action Items:

  • HTTPS endpoint configuration with YARP
  • YARP + JavaScript app for Azure deployment

5. PostgreSQL (63 questions)

Doc exists: azure-postgresql-*

Gaps:

Customer Quotes:

"I'm looking for Aspire Hosting Extension support for Azure PostgreSQL Flexible Server with Elastic Clusters (Preview)"

"AddAzurePostgresFlexibleServer().AddDatabase() doesn't create new databases in Azure via azd after the initial server creation"

From #help:

"SSL connection not applied to EF Migrations with Postgres"

Action Items:

  • Elastic Clusters support status
  • Database creation after initial deployment
  • SSL/TLS configuration for Azure PostgreSQL
  • EF Migration SSL issues

6. Desktop Apps - WPF/WinForms (35 questions)

Doc exists: ❌ Only MAUI (net-maui-integration)

Customer Quotes:

"is wpf and aspire a thing? cant really find anything about."

"how do you handle dev only resources? i thought i may just build a wpf client that starts in dev with all too"

From #help:

"MAUI apps not launching from Aspire on Mac with Rider"

Action Items:

  • WPF integration guide (or explicit "not supported" statement)
  • WinForms integration
  • Dev-only resources pattern
  • IDE-specific troubleshooting (Rider on Mac)

7. Database Version Upgrades

From #help:

"How to handle database container version upgrades when volume data is incompatible?"

"Resources no longer get CosmosDb connection string going from 13.0.1 to 13.1"

Action Items:

  • Database container version upgrade guidance
  • Volume migration patterns
  • Breaking changes migration guide (13.0 → 13.1)

Data Source

  • Discord channels: #💫│general, #🔵│azure, #🔨│building-resources
  • Help threads: 147 from #🆘│help
  • Total messages: 20,415
  • Date range: April 2025 - February 2026
  • Verified against: aspire-list_docs and aspire-search_docs

[Discord Feedback] Testing documentation gaps

Summary

Based on analysis of 20,415 Discord messages + 147 #help threads (April 2025 - February 2026).

Question counts:

Topic Questions
Integration Testing 41
DistributedApplicationTestingBuilder 15+
Unit Testing 4

Docs That Exist

Slug Title Coverage
testing-overview Testing overview ✅ Basic setup
write-your-first-test Write your first test ✅ xUnit, NUnit, MSTest
manage-the-apphost-in-tests Manage the AppHost in tests ✅ DistributedApplicationTestingBuilder basics
access-resources-in-tests Access resources in tests ✅ Resource access patterns

Gaps in Existing Docs

1. Advanced DistributedApplicationTestingBuilder Scenarios

Customer Quotes:

"Does distributedapplicationtestingbuilder work with single file apphosts?"

"Can the DistributedApplicationTestingBuilder.CreateAsync<>() target an apphost that uses a file based app? Since the apphost then is not a project it naturally does not appear in the generated Projects namespace."

"How to override services/env vars in tests when services run in separate processes?"

From #help threads:

  • "How to exclude/disable certain resources during integration tests?"
  • "Removing WaitAnnotation in tests"

Action Items:

  • Single-file AppHost testing patterns
  • File-based AppHost with testing builder
  • Selectively disabling resources in tests
  • Cross-process service replacement
  • Environment variable overrides in tests

2. CI/CD Testing Patterns

Customer Quotes:

"Tests pass locally but fail in Azure DevOps because Cosmos uses principalType 'User' but CI uses Service Principal"

"I started some spikes for getting otel out of aspire tests in CI pipelines"

From #help threads:

  • Tests run indefinitely in GitHub Actions
  • principalType issues with Azure resources

Action Items:

  • Service Principal configuration for CI
  • Timeout handling in CI environments
  • OTEL extraction from tests for CI reporting
  • Running aspire CLI detached for E2E tests

3. Unit Testing Custom Publishers

From #help threads:

"Best practice for unit testing custom publisher/deployment?"

Action Items:

  • Testing custom publishers/deployers
  • Mocking publishing context

Data Source

  • Discord channels: #💫│general, #🔵│azure, #🔨│building-resources
  • Help threads: 147 from #🆘│help
  • Total messages: 20,415
  • Date range: April 2025 - February 2026
  • Verified against: aspire-list_docs and aspire-search_docs

[Discord Feedback] Telemetry & Dashboard documentation gaps

Summary

Based on analysis of 20,415 Discord messages + 147 #help threads (April 2025 - February 2026).

Question counts:

Topic Questions
Dashboard 140
Configuration 89
OTEL/Telemetry 65
Logs many (overlaps)

Docs That Exist

Slug Title Coverage
aspire-dashboard-configuration Aspire dashboard configuration ✅ Configuration options
use-the-aspire-dashboard-with-nodejs-apps Dashboard with Node.js ✅ Node.js OTEL
use-the-aspire-dashboard-with-python-apps Dashboard with Python ✅ Python OTEL

Gaps in Existing Docs

1. Frontend/Browser Telemetry (Blazor WASM)

From #help threads:

"How to send OTEL traces from Blazor WASM frontend through authenticated proxy?"

Verified: grep -i "blazor.*otel\|wasm.*telemetry\|browser.*trace" aspire-docs-list.txt returns nothing.

Action Items:

  • Blazor WASM OTEL integration
  • Browser-to-backend trace correlation
  • Authenticated OTEL proxy patterns
  • Frontend telemetry collection

2. Post-Deployment Logging Issues

From #help threads:

"Only some logs show up in Aspire dashboard after deployed to Azure"

"Inconsistent log collection after Azure deployment"

Action Items:

  • Troubleshooting OTEL/logging post-deployment
  • Azure Monitor vs Aspire Dashboard integration
  • Log collection verification

3. Dashboard Access After Deploy

From #help threads:

"After aspire deploy only env-dashboard is accessible, asks for token"

Action Items:

  • Dashboard authentication post-deploy
  • .env file population after deploy
  • Token configuration

Data Source

  • Discord channels: #💫│general, #🔵│azure, #🔨│building-resources
  • Help threads: 147 from #🆘│help
  • Total messages: 20,415
  • Date range: April 2025 - February 2026
  • Verified against: aspire-list_docs and aspire-search_docs

[Docs] MCP gaps - security documentation and troubleshooting

Summary

Based on analysis of 20,415 Discord messages from the Aspire community, MCP documentation exists but is missing security information for enterprise approval and troubleshooting guidance.

Current State

MCP docs exist and cover:

  • configure-the-mcp-server - setup guide
  • aspire-mcp-command - CLI reference
  • aspire-mcp-init-command - initialization
  • aspire-mcp-start-command - starting server
  • ✅ Supported AI assistants (VS Code, Claude Code, Copilot CLI, OpenCode)

Missing Documentation

1. Security Documentation for Enterprise Approval (multiple questions)

Customer Quote:

"I am submitting tomorrow a request to approve the aspire mcp for general use, and they need this type of information up front. Is there a security doc for the mcp? I know you have internal security reviews for the aspire cli/mcp"

Requested Documentation:

  • Security model of MCP server
  • What data is exposed/accessible
  • Network boundaries (localhost only?)
  • Authentication/authorization
  • Enterprise deployment considerations

2. Claude Code Troubleshooting

Customer Quote:

"I've been battling Aspire MCP + Claude Code for quite a while now without success. Am I missing something? It seems like the MCP only detects AppHosts running at MCP startup, but you need to start/stop AppHosts during the session, so it doesn't work to just start the AppHost before starting Claude. This creates a chicken-and-egg problem..."

Requested Documentation:

  • AppHost detection lifecycle
  • How to handle start/stop during session
  • Common Claude Code integration issues
  • Debugging MCP connection problems

3. MCP + aspire deploy

Customer Quote:

"Trying to run aspire deploy and I have an MCP inspector resource via .AddMcpInspector(...). If I don't include it during publish, the pipeline executes and my ACA environment gets stood up. If I include it, I get this error..."

Requested Documentation:

  • Which resources should be excluded from publish
  • ExcludeFromMcp() vs excluding from deployment
  • Dev-only resources pattern

Verification

grep -i "security" aspire-docs-list.txt | grep -i mcp
# Result: NOT FOUND

Reviewed configure-the-mcp-server doc - no security section.

Data Source

  • Channels: #💫│general
  • MCP questions: 39
  • Date range: April 2025 - February 2026

[Docs] Developer experience gaps - debugging, watch mode

Summary

Based on analysis of 20,415 Discord messages from the Aspire community (April 2025 - February 2026), core developer workflow features lack documentation.

Missing Documentation

1. Debugging Guide (77 questions)

Current State: No dedicated debugging documentation. Some IDE-specific info exists in VS Code extension docs.

Customer Quotes:

"Hey does anyone know if you can attach a debugger to your server if you are running it through Aspire?"

"Hello, is there a way to configure a project so that the debugger is not attached to a specific application when the app host is run under the debugger?"

Requested Documentation:

  • Attaching debugger to running Aspire services
  • Selective debugging (debug some services, not others)
  • Debugging containers
  • Debugging in VS Code vs Visual Studio
  • Common debugging scenarios and solutions

2. Watch Mode / Hot Reload (42 questions)

Current State: Zero documentation exists (confirmed via list_docs grep)

Customer Quotes:

"Our team is struggling a bit with Aspire during development. Is there currently support for watch mode? Issues on Github range from 2023 to now, but I can't seem to find any recent updates on the topic?"

"yea but it sucks... so avoid it until it doesn't suck" - davidfowl (in response)

Requested Documentation:

  • Current status and known limitations
  • Workarounds for development workflows
  • Timeline or roadmap for improvements (if appropriate)
  • Why it's challenging (if appropriate to share)

Verification

grep -i "debug" aspire-docs-list.txt
# Result: Only "Debug Option" for CLI, no debugging guide

grep -i "watch" aspire-docs-list.txt
# Result: NOT FOUND

grep -i "hot reload" aspire-docs-list.txt
# Result: NOT FOUND

Data Source

  • Channels: #💫│general, #🔵│azure, #🔨│building-resources
  • Total messages: 20,415
  • Date range: April 2025 - February 2026

[Discord Feedback] Azure-specific documentation gaps

Summary

Based on analysis of the Discord #🔵│azure channel (1,334 messages) + #help threads.

From azure-gaps-report.md:

  • ❌ Documentation Gap: 14
  • ⚠️ Partially Documented: 8
  • ✅ Documented/Resolved: 4

Docs That Exist (verified via list_docs)

Slug Title Coverage
azure-functions-integration Azure Functions integration ✅ Hosting, triggers, deployment basics
azure-blob-storage Azure Blob Storage ✅ Hosting + client
deploy-using-the-aspire-cli Deploy using Aspire CLI ✅ ACA deployment
azure-security-best-practices-for-aspire-deployments Azure security best practices ✅ Security posture
yarp-integration YARP integration ✅ Local only

Gaps in Existing Docs

1. Azure Functions Deployment Configuration

Doc exists: azure-functions-integration ✅ but missing deployment config

Customer Quote:

"When deploying with aspire deploy, it's asking me to specify the worker runtime. Is this not possible to do at the .AddAzureFunctionsProject() level?"

Action Items:

  • Worker runtime configuration for deployment
  • Deployment prompts and how to pre-configure them
  • KEDA scaling configuration details

2. Service Discovery on Azure Container Apps

No dedicated doc found for ACA service discovery behavior

Customer Quotes:

"Or is https+http service discovery not a supported scenario for apps deployed to ACA?"

"Does AddServiceDiscoveryDestinationResolver not support pass-through resolution?"

Action Items:

  • Service discovery behavior differences: local vs ACA
  • https+http scheme resolution on ACA
  • AddServiceDiscoveryDestinationResolver API reference

3. YARP with Azure Container Apps

Doc exists: yarp-integration ✅ but no ACA deployment guidance

Customer Quote:

"Have a yarp bff project that proxies to various backends, all of which gets deployed to container apps environment. What URLs should I be using in the yarp config? https+http://<app-name> is causing 404's in Azure"

Action Items:

  • YARP URL configuration for ACA deployment
  • Service discovery + YARP in production
  • Troubleshooting 404s after deployment

4. Cross-Subscription Resources

No docs found for cross-subscription patterns

Customer Quote:

"How would I go about using Azure resource .AsExisting() from different subscriptions? Is this possible with the Aspire API?"

Action Items:

  • AsExisting from different subscriptions
  • Multi-resource-group deployments
  • Sharing resources across Aspire apps

5. Blob Storage SAS URI Configuration

Doc exists: azure-blob-storage ✅ but missing SAS patterns

Customer Quotes:

"Locally, User SAS against Blob Storage doesn't work. However, when deployed to Azure, ONLY User SAS against Blob Storage works. Has anybody had and solved this issue?"

"How do I grant my Azure Blob storage through Aspire access to generate SAS URIs?"

Action Items:

  • SAS URI generation permissions
  • User delegation vs account SAS
  • Local vs deployed authentication behavior differences

6. OTEL Collector Integration

No docs found for custom OTEL collector setup

Customer Quotes:

"do you know if there's a samples / template somewhere with a config.yaml that's targeting aspire endpoint from the collector?"

"the toolkit collector knows where and how to send it back to the aspire otel endpoint?"

Action Items:

  • Custom OTEL collector configuration
  • Forwarding traces to Aspire dashboard
  • config.yaml examples for collector

7. HTTPS/Certificate in Azure Deployment

Docs exist: certificate-configuration ✅ but Azure deployment gaps

Customer Quote:

"System.InvalidOperationException: Unable to configure HTTPS endpoint. No server certificate was specified, and the default developer certificate could not be found or is out of date."

Action Items:

  • Dev certificate behavior in Azure deployment
  • Production certificate setup for ACA
  • Troubleshooting certificate errors

8. Integration Status/Roadmap

No integration status documentation found

Customer Quotes:

"Any idea when Aspire.Microsoft.Azure.StackExchangeRedis is supposed to go GA?"

"does all Integration respectively have like a CheckList on what's blocking GA?"

Action Items:

  • Integration maturity status (preview vs GA)
  • What's blocking GA for preview integrations
  • Migration paths for breaking changes

9. Azure Permissions/RBAC for Deployment

Doc exists: manage-azure-role-assignments ✅ but deployment permissions unclear

Customer Quote:

"Because one deployment step need a permission to create a rg. That is strange based on your setup > everything in the same rg defined in the settings."

Action Items:

  • Required Azure permissions for aspire deploy
  • Troubleshooting permission errors
  • Minimal RBAC requirements

Data Source

  • Discord channel: #🔵│azure (1,334 messages)
  • Help threads: 147 from #🆘│help
  • Date range: July 2025 - February 2026
  • Verified against: aspire-list_docs and aspire-search_docs

Suggested Examples Based on Discord Feedback

Generated: 2026-02-01
Source: 20,415 Discord messages + 147 #help threads
Date Range: April 2025 - February 2026


1. React/Vite Frontend with API URL Configuration (102 questions)

Problem: Users struggle to pass API URLs from Aspire to Vite/React frontends. Environment variables come through as undefined.

Customer Quote:

"I have react+vite in the frontend calling a minimal API. I can't get the API URL to work -always undefined-. I even tried WithEnvironment("VITE_API_BASE_URL", webApi.GetEndpoint("https")) and yet nothing."

Conceptual Pattern:

var api = builder.AddProject<Projects.Api>("api");

var frontend = builder.AddViteApp("frontend", "../frontend")
    .WithHttpEndpoint(port: 3000, env: "PORT")
    .WithEnvironment("VITE_API_URL", api.GetEndpoint("https"))
    .WithReference(api);

2. Azure DevOps Pipeline with Aspire (87 questions)

Problem: Users need guidance on running Aspire CLI and tests in Azure DevOps pipelines, including service principal configuration.

Customer Quote:

"Trying to work my way through some issues using the aspire cli in my Azure DevOps pipeline."

"Tests pass locally but fail in Azure DevOps because Cosmos uses principalType 'User' but CI uses Service Principal"

Conceptual Pattern:

# azure-pipelines.yml
- task: UseDotNet@2
  inputs:
    version: '9.x'

- script: dotnet tool install -g aspire-cli
  displayName: 'Install Aspire CLI'

- script: |
    az login --service-principal -u $(SP_CLIENT_ID) -p $(SP_SECRET) --tenant $(TENANT_ID)
    aspire deploy --non-interactive
  displayName: 'Deploy with Aspire'
  env:
    AZURE_CLIENT_ID: $(SP_CLIENT_ID)
    AZURE_TENANT_ID: $(TENANT_ID)
    AZURE_CLIENT_SECRET: $(SP_SECRET)

3. Selective Debugging (77 questions)

Problem: Users want to debug some services while running others without the debugger attached.

Customer Quote:

"is there a way to configure a project so that the debugger is not attached to a specific application when the app host is run under the debugger?"

Conceptual Pattern:

var api = builder.AddProject<Projects.Api>("api");  // Will attach debugger

var worker = builder.AddProject<Projects.Worker>("worker")
    .WithEnvironment("DOTNET_DEBUGGER_ATTACH", "false");  // Skip debugger

// Or use launchSettings.json profiles with different debug configurations

4. Dapr with Azure Container Apps Deployment (43 questions)

Problem: Dapr sidecars work locally but get disabled or reset when deploying to ACA.

Customer Quote:

"I just redeployed my container apps that have WithDaprSidecar but the Azure portal now shows Dapr is disabled - what gives? Am I supposed to add something to the PublishAsContainerApp section?"

Conceptual Pattern:

var stateStore = builder.AddDaprStateStore("statestore");

var api = builder.AddProject<Projects.Api>("api")
    .WithDaprSidecar()
    .WithReference(stateStore)
    .PublishAsAzureContainerApp((module, app) =>
    {
        app.Template.Value!.Scale.Value!.MinReplicas = 1;
        // Dapr configuration preserved here
    });

5. Console Application with Service Discovery (17 questions)

Problem: Users want to add console apps to Aspire and use service discovery without ASP.NET Core.

Customer Quote:

"if I want to hook up a Console project with Aspire, so that it can still (maybe?) use service discovery, service defaults, etc. with Aspire resources... is that possible?"

Conceptual Pattern:

// AppHost
var redis = builder.AddRedis("redis");

var console = builder.AddProject<Projects.MyConsoleApp>("console")
    .WithReference(redis);

// Console Program.cs
var builder = Host.CreateApplicationBuilder(args);
builder.AddServiceDefaults();
builder.AddRedisClient("redis");
await builder.Build().RunAsync();

6. Kubernetes with AddKubernetesEnvironment (54 questions)

Problem: Users want to deploy to Kubernetes but AddKubernetesEnvironment() is undocumented.

Customer Quote:

"I was wondering if anyone has considered an option where you could orchestrate resources in an actual Kubernetes cluster running locally (with MiniKube, Kind, Docker Desktop or whatever)"

Conceptual Pattern:

var k8s = builder.AddKubernetesEnvironment("k8s-env")
    .WithContainerRegistry("myregistry.azurecr.io");

var api = builder.AddProject<Projects.Api>("api")
    .PublishAsKubernetesDeployment();

// Generates Helm charts / Kubernetes manifests

7. Python Service with HTTPS (47 questions)

Problem: Python services need HTTPS configuration for internal and external communication.

Customer Quote:

"Ok. So I can force https in the python app in publish mode today to make it work without my hack?"

Conceptual Pattern:

var pythonApi = builder.AddPythonApp("python-api", "../python-service", "main.py")
    .WithHttpsEndpoint(port: 8000, env: "PORT")
    .WithEnvironment("ASPIRE_HTTPS_CERT_PATH", "/certs/cert.pem")
    .WithEnvironment("ASPIRE_HTTPS_KEY_PATH", "/certs/key.pem");

8. Airgapped / Private Container Registry (42 questions)

Problem: Enterprise users need to override mcr.microsoft.com with internal registry mirrors.

Customer Quote:

"Is there an easy way to override container registry hostnames? Internally we use a jfrog artifactory proxy for mcr.microsoft.com."

Conceptual Pattern:

var registry = builder.AddContainerRegistry("internal-registry", "artifactory.corp.com");

var redis = builder.AddRedis("redis")
    .WithContainerRegistry(registry)
    .WithImageOverride("artifactory.corp.com/mirrors/redis:7.0");

9. WaitFor Behavior in Production Deployment (70 questions)

Problem: Users don't understand how WaitFor translates to production deployments.

Customer Quote:

"how does aspire deploy handle WaitFor? for example, if i set a database migration service to run before an api and frontend, how is this handled when deploying to i.e. azure?"

Conceptual Pattern:

var db = builder.AddPostgres("db");

var migrations = builder.AddProject<Projects.Migrations>("migrations")
    .WithReference(db);

var api = builder.AddProject<Projects.Api>("api")
    .WithReference(db)
    .WaitFor(migrations);  // Local: waits for migrations to complete
                           // ACA: Creates dependency but doesn't block deployment

10. Integration Testing in CI with Service Principal (41 questions)

Problem: Tests using Azure resources fail in CI due to User vs ServicePrincipal identity issues.

Customer Quote:

"Tests pass locally but fail in Azure DevOps because Cosmos uses principalType 'User' but CI uses Service Principal"

Conceptual Pattern:

// In test setup
var builder = await DistributedApplicationTestingBuilder.CreateAsync<Projects.AppHost>();

// Configure for CI environment
builder.WithEnvironment("AZURE_CLIENT_ID", Environment.GetEnvironmentVariable("SP_CLIENT_ID"));
builder.WithEnvironment("AZURE_TENANT_ID", Environment.GetEnvironmentVariable("TENANT_ID"));
builder.WithEnvironment("AZURE_CLIENT_SECRET", Environment.GetEnvironmentVariable("SP_SECRET"));

await using var app = await builder.BuildAsync();

11. Blazor WASM with OpenTelemetry (140 questions - dashboard related)

Problem: Users want to send traces from Blazor WASM frontend to Aspire dashboard.

Customer Quote (from #help):

"How to send OTEL traces from Blazor WASM frontend through authenticated proxy?"

Conceptual Pattern:

// AppHost
var otelCollector = builder.AddOpenTelemetryCollector("otel")
    .WithExternalHttpEndpoints();  // Expose for browser access

var blazor = builder.AddProject<Projects.BlazorWasm>("blazor")
    .WithEnvironment("OTEL_ENDPOINT", otelCollector.GetEndpoint("http"));

// Blazor WASM Program.cs
builder.Services.AddOpenTelemetry()
    .WithTracing(tracing => tracing
        .AddOtlpExporter(options => 
            options.Endpoint = new Uri(builder.Configuration["OTEL_ENDPOINT"])));

12. MCP Server with Claude Code (39 questions)

Problem: Users struggle with MCP + Claude Code integration, especially AppHost detection timing.

Customer Quote:

"I've been battling Aspire MCP + Claude Code for quite a while now without success. It seems like the MCP only detects AppHosts running at MCP startup, but you need to start/stop AppHosts during the session"

Conceptual Pattern:

// .mcp.json for Claude Code
{
  "mcpServers": {
    "aspire": {
      "command": "aspire",
      "args": ["mcp", "start", "--watch"]  // Auto-detect AppHost changes
    }
  }
}

13. Container-to-Host Networking (17 questions)

Problem: Containers can't reach localhost services; users confused about host.docker.internal.

Customer Quote:

"I'm struggling to get endpoints resolved in the context of a container. If I use KnownNetworkIdentifiers.LocalhostNetwork, it always comes back with localhost not host.docker.internal"

Conceptual Pattern:

// For container that needs to reach host SQL Server
var container = builder.AddContainer("mycontainer", "myimage")
    .WithEnvironment("SQL_SERVER", "host.docker.internal")
    .WithContainerRuntimeArgs("--add-host=host.docker.internal:host-gateway");

// Or use Aspire's built-in networking
var sql = builder.AddSqlServer("sql");  // Aspire handles networking
var container = builder.AddContainer("mycontainer", "myimage")
    .WithReference(sql);  // Correct connection string injected

14. CORS Configuration (10+ questions)

Problem: Users don't know when or how to configure CORS with Aspire.

Customer Quote:

"Wait.. hold on, hold on, hold on, hold on, hold on.... What? do we need to configure cors?"

Conceptual Pattern:

// AppHost - Aspire doesn't configure CORS; it's done in the service

// Api Program.cs
builder.Services.AddCors(options =>
{
    options.AddDefaultPolicy(policy =>
    {
        // In dev, allow Aspire frontend endpoints
        policy.WithOrigins(
            builder.Configuration["services:frontend:https:0"] ?? "https://localhost:5001"
        ).AllowAnyMethod().AllowAnyHeader();
    });
});

15. Watch Mode / Hot Reload (42 questions)

Problem: Teams want hot reload during Aspire development but it's not working well.

Customer Quote:

"Our team is struggling a bit with Aspire during development. Is there currently support for watch mode?"

Conceptual Pattern:

// Current workaround - run services outside Aspire for hot reload
var api = builder.AddProject<Projects.Api>("api")
    .WithEnvironment("DOTNET_WATCH", "true")  // Hint for tooling
    .ExcludeFromManifest();  // During dev, run separately with `dotnet watch`

// For container-based services
var node = builder.AddNpmApp("frontend", "../frontend", "dev")  // npm run dev includes watch
    .WithHttpEndpoint(port: 3000, env: "PORT");

Summary

# Example Questions Effort
1 React/Vite + API URL 102 Small
2 Azure DevOps Pipeline 87 Medium
3 Selective Debugging 77 Small
4 Dapr + ACA Deployment 43 Medium
5 Console + Service Discovery 17 Small
6 Kubernetes Environment 54 Large
7 Python HTTPS 47 Small
8 Airgapped Registry 42 Medium
9 WaitFor in Production 70 Small
10 CI Testing + Service Principal 41 Medium
11 Blazor WASM OTEL 140 Medium
12 MCP + Claude Code 39 Small
13 Container-to-Host Networking 17 Small
14 CORS Configuration 10+ Small
15 Watch Mode / Hot Reload 42 Large
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment