Migrating multi-tenancy to .NET Core 3.1 (LTS)

How to make the multi-tenant solution compatible with .NET Core 3.1

2019-12-03: Updated blog post from .NET 3.0 to .NET Core 3.1 which is a LTS release Introduction Since writing our multi-tenancy mini-series based on .NET Core 2.2, .NET Core 3.1 has come along and is a long term supported (LTS) release. This post covers off all the changes you need to complete to make our mini-series compatible with your shiny new .NET Core 3.1 web application. Fix for custom service provider The custom service provider is used to support tenant specific containers as descripted in Part 2 of the mini-series. [Read More]

Creating a multi-tenant .NET Core Application - Tenant specific authentication

Tenant specific authentication, part 4 of 4

Introduction In the final installment we will extend our multi-tenant solution to allow each tenant to have different ASP.NET Identity providers configured. This will allow each tenant to have different external identiy providers or different clients for the same identity provider. This post is compatible with .NET Core 2.2 only We make this compatible with .NET Core 3.1 (LTS release) in this post here This is important to allow consent screens on third party services reflect the branding of the particular tenant that the user is signing in to. [Read More]

Creating a multi-tenant .NET Core Application - Tenant specific options

Tenant specific configuration options, part 3 of 4

Introduction Today we will extend our multi-tenant solution to work nicely with the ASP.NET Core Options Pattern. This will allow us to configure components using tenant specific configuration options. This post is compatible with .NET Core 2.2 only We make this compatible with .NET Core 3.1 (LTS release) in this post here This is useful in situations where different tenants might have different settings (connection strings, cookie policies etc), but the services we are configuring are unaware of the whole multi-tenant situation. [Read More]

Creating a multi-tenant .NET Core Application - Tenant containers

Tenant containers, part 2 of 4

Introduction This post looks at how to configure services on a per-tenant basis. This allows us to resolve a different service or instance based on which tenant is active. This post is compatible with .NET Core 2.2 only We make this compatible with .NET Core 3.1 (LTS release) in this post here Parts in the series Part 1: Tenant resolution Part 2: Tenant containers (this post) Part 3: Options configuration per tenant Part 4: Authentication per tenant Extra: Upgrading to . [Read More]

Creating a multi-tenant .NET Core Application - Tenant resolution

Tenant resolution, part 1 of 4

Introduction This series of blog posts is an exploration of how to achieve multi-tenancy in an ASP.NET Core web application. There’s a lot of code snippets so you can follow along with your own sample app. There’s no NuGet package you can plug and play at the end of this but it is a great learning exercise. It touches a few “core” (sorry, not sorry) parts of the framework 😉 [Read More]

Host your Hugo site on Azure Storage

deployed with VSTS

I’m a big fan of Static Site Generators (SSGs) for basic websites like this blog. By removing all the moving parts we can host blazing fast sites directly out of Azure Storage at very low cost. In this post I’ll cover how to host a static website created with Hugo under a custom domain using Azure Storage (Static Sites) and Cloudflare which is automatically deployed from GitHub using Azure DevOps. [Read More]

Using Azure Functions to text you when your servers are down

So I’ve just read a great blog post by Nick Malcolm on Using AWS Lambda to call and text you when your servers are down. The thing I like most about it is that it’s serverless so no infrastructure to maintain and worry about. However, not everyone is on AWS. The environment I want to monitor is all hosted in Azure! Turns out Azure also fully supports this serverless set up and it’s just as easy, if not easier, to do the exact same thing using Azure Functions and Alerts. [Read More]
guide  azure 

How to import Python extension modules in Azure Functions

An awesome feature of Azure Functions is its ability to run a wide range of languages, C#, F#, Node.js, Python, PHP, batch, bash, Java, or any executable. So when I wanted to do a bit of work with the Google Eddystone beacon format it was a natural fit as I just needed to quickly run a few Python methods - given the example code Google provides is in Python. [Read More]

Running Go on Azure App Services

At first I thought I was going to have to go something tricky - Wade Wegner has a great write up of one method here, but it turns Azure App Services have now added native Go support so we don’t need to set up Go on the server any more. The versions currently supported on the Azure App Service platform are 64bit Go 1.4.2 and Go 1.5.1 and it turns out to be super simple to get going. [Read More]
go  guide  azure 

Migrating an Azure VM to a different region

Microsoft just launched Azure cloud services in Australia, given the proximity to New Zealand where the majority of our customers are based it made sense to migrate Solve’s various azure hosted services there. The majority of the services run on hosted platforms such as Azure Websites which were super simple to migrate, however there were a few legacy systems running on VMs which needed to be migrated. Even though you can’t do it from the online interface it, it’s actually pretty simple. [Read More]
azure  guide