Tuesday, October 1, 2019

ASP.NET Core 3.0 - Autofac error

After upgrading my ASP.NET Core application to 3.0 I got an error in Startup.cs  when I switched to the new HostBuilder:

System.NotSupportedException: 'ConfigureServices returning an System.IServiceProvider isn't supported.'

Let’s take a look at my ConfigureServices() method:

Inside my ConfigureServices I’m using the Autofac containerbuilder to build up my container and return an AutofacServiceProvider. Therefore I updated the ConfigureServices() method signature to return an IServiceProvider. This worked perfectly in ASP.NET Core 2.x but is not allowed anymore when using the new HostBuilder in ASP.NET Core 3.0.

Time to take a look at the great Autofac documentation for a solution: https://autofac.readthedocs.io/en/latest/integration/aspnetcore.html#asp-net-core-3-0-and-generic-hosting. Ok, so to fix this we have to change our ConfigureServices() method to no longer return an IService Provider:

Then we have to update the program.cs to register our AutofacServiceProvider there:

As a last step we have to add a ConfigureContainer() method to the Startup.cs where we can configure the containerbuilder instance:

Remark: We don’t have to build the container ourselves, this is done by the framework for us.