We've identified the cause of the problem.
It is an issue with the medioclinic demo and not .NET configuration.
We were missing the last commit made to the demo in the file XperienceLogger.cs c2d18618, which has the message 'Fix IoC-related exceptions at startup'.
A small change was made which swallows exceptions in the case that ISiteService can't be resolved.
Having recently done the Kentico training it's not exactly clear why this change was required, but we assume there must be an edge case where the logger is hit before IOC is configured.
It's a bit disappointing that Kentico could only suggest that we had something wrong with our .NET configuration.
FYI the reason we've been determined to resolve this is that 'Development-time IIS support in Visual Studio for ASP.NET Core' provides a better development experience than repeatedly starting IIS Express, in addition to providing the full IIS feature set as in a production environment.