Deploy a .NET App to Azure Container Apps — Part 5: Deploy to Azure Container Apps
This is the part where it becomes real. Four tabs in the Azure portal and your container gets a public HTTPS address that anyone in the world can open.
.NET Framework and Core for Application Development
View All TagsThis is the part where it becomes real. Four tabs in the Azure portal and your container gets a public HTTPS address that anyone in the world can open.
This is the shortest part of the series and the one most likely to save you an afternoon. Pushing an image is three commands — but if you're on an Apple Silicon Mac, one missing flag produces a container that builds perfectly, pushes perfectly, and then refuses to start on Azure.
Your app works on your machine because your machine happens to have .NET 10 installed. A container removes that "happens to" — it packages the app and the runtime into one box that behaves identically everywhere.
Most "deploy to the cloud" tutorials skip the part where you actually understand what you built. This series does the opposite: six short parts that take you from an empty folder to a real, public URL on Azure, explaining every command along the way.
Entity Framework Core maps each database table to an entity class and gives you a DbContext to query them. Most of the time you read from a single DbSet, but sooner or later you need data that lives across two tables — exactly what a SQL JOIN gives you. In EF Core, the lambda-based Join() method does the same job, and it translates into real SQL that runs on the database server.
Everything below targets .NET 10 and EF Core 10, the current Long Term Support releases.
appsettings.json is where an ASP.NET Core app keeps its settings — connection strings, API base URLs, feature flags, timeouts. Reading those values comes down to one service, IConfiguration, which ASP.NET Core registers for you. In a console app you build the same thing yourself in a few lines.
This guide covers both, on .NET 10.
When creating an AdapterWithErrorHandler class that inherits from CloudAdapter, you might encounter this compile error:
Argument 3: cannot convert from 'Microsoft.Extensions.Logging.ILogger<Microsoft.Agents.Hosting.AspNetCore.IAgentHttpAdapter>' to 'Microsoft.Extensions.Logging.ILogger<Microsoft.Agents.Hosting.AspNetCore.CloudAdapter>'
This happens because you're passing ILogger<IAgentHttpAdapter> to the CloudAdapter base constructor, but it expects ILogger<CloudAdapter>.
Learn how to deploy a .NET application on a Linux Ubuntu server, configure nginx as a reverse proxy, set up subdomain mapping, and secure your application with SSL certificate using certbot. This comprehensive guide covers everything from server setup to production deployment.