Upgrade naar ASP.NET Core 2.2 niet zo eenvoudig als het lijkt

De upgrade van ASP.NET Core 2.1 naar 2.2 lijkt heel eenvoudig volgens de documentatie hier: https://docs.microsoft.com/en-us/aspnet/core/migration/21-to-22?view=aspnetcore-2.2&tabs=visual-studio

Dat ziet er uit als een uurtje werk, maar het bleek tegen te vallen. Naast de stappen in het genoemde document zijn er nog twee dingen waar het bij mij op fout ging.

Een van de nieuwe features van ASP.NET Core 2.2 is In-process hosting. IIS functioneert dan niet langer als proxy naar Kestrel, maar het ASP.NET Core process wordt binnen IIS uitgevoerd. Dat zou in theorie een veel grotere performance opleveren, maar dat zie je waarschijnlijk alleen bij een hoge belasting.

Maar goed, ik was daarmee aan de slag gegaan, om bij het starten van de site een 500 error te krijgen.

ANCM In-Process Handler Load Failure

HTTP Error 500.0 ANCM In-Process Handler Load Failure
HTTP Error 500.0 ANCM In-Process Handler Load Failure

Microsoft adviseert om een ASP.NET Core 2.2 site als 32 bits te deployen, maar als je hem als 64 bits of Any CPU deployed krijg je deze fout. Na uren zoeken vond ik dat je dan in de application pool moet uitzetten dat hij 32 bits applicaties ondersteunt.

Application Pool

Die True moet dus op False staan als je de app als 64 bits deployed.

 

ASP.NET Core 2.2 kan de configuratie bestanden niet vinden.

Gauw verder, helaas wil de site nu nog steeds niet starten. Na inspectie van de logs blijkt dat hij de configuratie files niet kan vinden.

Het blijkt een fout in Versie 2.2. De current directory stond standaard op de directory waar de project dll staat, maar nu is hij ergens in Inetpub van IIS.

De oplossing is deze class in je project in te voeren:

https://github.com/aspnet/Docs/blob/master/aspnetcore/host-and-deploy/aspnet-core-module/samples_snapshot/2.x/CurrentDirectoryHelpers.cs

Vervolgens zet je in Program.cs bij Main de currentdirectory door deze class aan te roepen:

public static void Main(string[] args)
{

CurrentDirectoryHelper.SetCurrentDirectory();

CreateWebHostBuilder(args).Build().Run();

}

Daarmee kan de currentdirectory weer normaal gevonden worden.

Hopelijk heb je hier wat aan, laat dan een kort commentaar achter!

Pieter

Laat een reactie achter

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *