Recently, I deployed a .NET Aspire solution to Azure Container Apps (via Azure Container Registry). The Azure Container Apps resource is running within my personal Azure tenant. In my personal tenant, my user is assigned as Owner of the corresponding resource group and therefore also Owner (by inheritance) of the Container Apps Environment which resides... Continue Reading →
[Best Practice] Make Application Configuration of ASP.NET Core applications obvious
In my work as a software developer, I have already been involved in numerous existing .NET software projects. Nearly all of these existing code bases had at least one thing in common: application configuration was not obvious. But why? Especially in the .NET ecosystem everything required to make it obvious is there. In this blog... Continue Reading →
[NoBrainer] Create git tag in a Azure DevOps YAML pipeline based on AssemblyVersion of a specific .csproj file
The content describes a process for creating a git tag in Azure DevOps after each production deployment, using the assembly version from a .NET project. It outlines a pipeline job that retrieves the version, formats it, then creates and pushes a git tag, requiring specific permissions for the build service user.
[HOWTO] Run ASP.NET Core integration tests in a Az DevOps YAML pipeline when subject under test uses DefaultAzureCredential
Last week I struggled (again) running ASP.NET Core integration tests for an ASP.NET Core Web API that uses DefaultAzureCredential in a Azure DevOps YAML pipeline. To avoid having to struggle again, I am writing down my findings here. The initial situation There was an existing ASP.NET Core (.NET 8) Web API project that uses DefaultAzureCredential... Continue Reading →
[HOWTO] Rotate Azure Key Vault secrets used by an ASP.NET Core Web API with Terraform on every deployment
The blog post details the process of rotating secrets stored in Azure Key Vault with each application deployment, utilizing Infrastructure as Code (IaC) principles via Terraform. It emphasizes the importance of secret rotation to minimize risks from leaks. An ASP.NET Core Web API is demonstrated as the application example, alongside procedural GitHub Actions for deployment.
[HOWTO] Implement offline capability for Blazor PWA using Service Worker and local storage
In spring 2024, I developed offline capabilities for a Blazor Progressive Web App consisting of a .NET Web API and Blazor WASM client. This involved storing form data in local storage when offline and syncing the data when online again. The solution uses service worker to cache necessary assets, ensuring users could access forms without an internet connection.
[Workaround] Fix Testcontainers.SQL error “Docker.DotNet.DockerApiException : Docker API responded with status code=Conflict”
Recently an error occurred in an Azure DevOps build pipeline due to a conflict with a non-running Docker container, impacting integration tests using Testcontainers.MsSql. A workaround was suggested to resolve compatibility issues on Linux by updating the Docker image used by Testcontainers.MsSql.
[HOWTO] Report code coverage of .NET solution in SonarCloud when using Azure DevOps Microsoft-hosted linux agent
This blog post discusses the integration of SonarCloud code coverage reporting in an Azure DevOps YAML pipeline for .NET projects. It highlights adjustments needed when running such a pipeline on Azure DevOps Microsoft-hosted linux agents.
[Workaround & Headache Prevention] Successfully create teams channel notification subscription with Microsoft Graph .NET Client Library v5
When upgrading from Microsoft Graph .NET Client Library v4 to v5, adapting GraphServiceClient methods for team channel notification subscriptions according to official documentation caused issues. Despite the recommended code changes, they did not work as expected. After extensive debugging and research, a workaround was found to resolve the issue. This is a known issue with POST requests in v5.
[HOWTO] Configure Serilog for a .NET Core Web API running on Azure App Service
This blog post guides the configuration of Serilog for a .NET Core Web API running on an Azure App Service. It covers logging requirements and implementation, including Serilog setup in Program.cs and appsettings.json. It also provides instructions for querying logs in Azure Application Insights and streaming them using Log Stream in Azure App Service.
