Edi Wang

.NET and Azure Developer


Fix Azure Ubuntu Virtual Machine Agent Status is Not Ready Problem

One of my Azure VM running Ubuntu 22.04 LTS suddenly gives a warning message " virtual machine agent status is not ready. Troubleshoot the issue". I recently did some updates and cleaned up the system, it seems the VM agent was destroyed. I've fixed the issue and would like to share the solution. …
Azure VM

Cloud Architecture Design of My Email Notification Infrastructure on Azure

My blog system "Moonglade" needs to send email notifications to blog owner when there are events like new comments, new pingbacks, and send email to readers when their comments are replied.  I've been building my own infrastructure in the last few years. I will share the journey of how this email infrastructure evolved and the things I learnt. …
ASP.NET Azure Azure Function Azure Storage Queue

How to Automatically Move Blobs to Cool or Archive Tier After a Period of Time

Azure Storage Account offers three tiers of blob storage. Hot, cool and archive. We usually use hot tier for data that needs to be accessed frequently, move blobs to cool tier if they won't be used very often, and archive blobs when they are not used at all. However, manually, or programmatically moving blobs still require an amount of work to do. Let's see how to do it without any programming. …
Azure Azure Blob Storage

How to Activate Kendo UI License in Azure Static Web Apps Without Exposing Secret Value

I have an open-source project that uses Kendo UI for Angular. In order for users to have BYOL model, I could not include the license file in my public repository. There is no example of how to activate Kendo license during SWA build process. Let's see how to activate Kendo UI license during the build process of Azure Static Web Apps without including the license itself in repository. …
Azure Kendo UI GitHub

Get Client IP When Your ASP.NET Core App is behind Reversed Proxy on Azure App Service

Problem I have a web app with a web front end and API backend both deployed to Azure App Service. I reversed proxy the API using this method I described before, so that my web front end can access API without having CORS issue, and the end users won't need to access my API address directly. However, for the API code, the client IP address I got is always Azure app service's outbound IP instead …
.NET Azure App Service

Return Excel File in Azure Function

We typically use Azure Function to create APIs or scheduled jobs. For REST APIs that return JSON as response, it's extremely easy, but sometimes, we need another format besides JSON, like a file. Recently I have been working on a project that needs to generate Excel reports from Azure Function. I am using .NET 6.0, C# with Azure Function V4. Let's see how to do it. …
Azure Azure Function

Deploy to Azure Static Web App from Local Machine without GitHub Action

When creating Azure Static Web App in Azure portal. The deployment options did not provide clear instructions for how to deploy without creating a project and CI/CD pipeline on GitHub or Azure DevOps. Many times, we just want to deploy a simple one-time project from a local computer. Let's see how to do this. …

Make NPM Install with Legacy Peer Deps in Azure Static Web Apps Builds

After upgrading a JS library, GitHub Action for build and deploy Azure Static Web Apps blows up sky high. According to the error message. npm install command need to run with --legacy-peer-deps. However, there is no step of npm install in Azure Static Web Apps's yml file. How can we tell npm to use legacy peer deps? …
Azure NPM

Move CRON Expression from Hard Code to Configuration in Azure Function App

When creating Azure Function with Timer trigger, we usually write CRON expression in our function code. But when you need to dynamically adjust your timer based on business needs, you will have to update your code and redeploy the function. Let's see how we can remove the hard code CRON expression and put it into configuration that we can easily update on the Azure Portal without redeploy the code …
Azure Azure Function