Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions _posts/2026-03-25-Aspire-GA.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
---
title: "Aspire on Azure App Service is now Generally Available"
author_name: "Tulika Chaudharie"
toc: true
toc_sticky: true
---

Today we are announcing General Availability of Aspire on Azure App Service, making it easier to take distributed applications from local development to a fully managed production environment on Azure App Service. With the [Aspire.Hosting.Azure.AppService](https://www.nuget.org/packages/Aspire.Hosting.Azure.AppService) package, you can define your hosting environment in code and deploy to App Service using the same AppHost model you already use for orchestration.

Aspire brings a code-first model for building, running, and deploying distributed applications, with AppHost as the place where services, dependencies, and topology are declared. On Azure App Service, this means developers can keep the familiar Aspire programming model while using a fully managed platform for hosting, security patching and scaling. You can read more about the benefits of Aspire [here](https://aspire.dev/get-started/what-is-aspire/).

If you’re new to Aspire on App Service, the fastest path is our [Quickstart](https://learn.microsoft.com/azure/app-service/quickstart-dotnet-aspire), which walks you through creating an Aspire starter app and deploying it to App Service

This release adds Deployment Slots support so you can adopt safer deployment patterns (staging → validate → swap). Here is a code snippet showing you how to add a slot.

```csharp
var builder = DistributedApplication.CreateBuilder(args);

builder.AddAzureAppServiceEnvironment("<appsvc64>")
.WithDeploymentSlot("dev");

var apiService = builder.AddProject<Projects.AspireApp64_ApiService>("apiservice")
.WithHttpHealthCheck("/health")
.WithExternalHttpEndpoints();

builder.AddProject<Projects.AspireApp64_Web>("webfrontend")
.WithExternalHttpEndpoints()
.WithHttpHealthCheck("/health")
.WithReference(apiService)
.WaitFor(apiService);

builder.Build().Run();

```

1. If the production slot does not already exist, this creates both the production slot and the staging slot with identical code.
2. If the production slot already exists, the deployment goes only to the staging slot.

> [NOTE]
>
> **Scaling:** Manual scaling is supported (via AppHost code or the Azure portal), and you can also setup [rule-based scaling](https://learn.microsoft.com/azure/azure-monitor/autoscale/autoscale-get-started). Automatic scaling is not yet supported in the current experience.

Learn more about the configuration options for Aspire on App Service [here](https://learn.microsoft.com/azure/app-service/configure-language-dotnet-aspire).

We’d love for you to try Aspire on App Service and tell us what you’re building - your feedback helps shape what we ship next.
Loading