Identité : la version Bootstrap par défaut de l’interface utilisateur a été modifiée

À compter d’ASP.NET Core 6.0, l’interface utilisateur Identity utilise par défaut la version 5 de Bootstrap. Les versions ASP.NET Core 3.0 à 5.0 utilisaient la version 4 de Bootstrap.

Version introduite

ASP.NET Core 6.0

Comportement

AddDefaultIdentity<TUser>(IServiceCollection) appelle la méthode privée interne TryResolveUIFramework. TryResolveUIFramework lit le UIFramework à partir de l’assembly d’application. La version de UIFramework par défaut est la suivante :

  • Bootstrap 5 pour le SDK .NET 6
  • Bootstrap 4 pour le SDK .NET Core 3.1 et .NET 5

Les applications ASP.NET Core 3.1 et 5.0 créées par un modèle contiennent Bootstrap 4 dans wwwroot\lib\bootstrap. Les applications ASP.NET Core 6 créées par un modèle utilisent Bootstrap 5. Quand une application ASP.NET Core 3.1 ou 5.0 est migrée vers .NET 6, l’application détecte UIFramework version 5, tandis que wwwroot\lib\bootstrap contient la version 4. Cette incompatibilité de version restitue les modèles d’identité de manière incorrecte.

Raison du changement

Bootstrap 5 a été publié pendant la période ASP.NET Core 6.0.

Les applications impactées par ce changement utilisent l’interface utilisateur Identity par défaut et l’ont ajoutée dans Startup.ConfigureServices comme indiqué dans le code suivant :

services.AddDefaultIdentity<IdentityUser>()

Effectuez l'une des opérations suivantes :

  • Ajoutez la propriété MSBuild IdentityUIFrameworkVersion dans le fichier projet et spécifiez Bootstrap 4 :

    <PropertyGroup>
      <TargetFramework>net6.0</TargetFramework>
      <IdentityUIFrameworkVersion>Bootstrap4</IdentityUIFrameworkVersion>
    </PropertyGroup>
    

    Le balisage précédent définit la version de UIFramework sur Bootstrap 4, la même version de Bootstrap que celle utilisée dans ASP.NET Core 3.1 et 5.0.

  • Renommez ou supprimez le dossier wwwroot\lib\bootstrap, et remplacez-le par le dossier wwwroot\lib\bootstrap d’une application ASP.NET Core 6 générée par un modèle. Les modèles d’identité fonctionnent avec ce changement, mais pour les applications utilisant Bootstrap, vous devez peut-être consulter le guide de migration Bootstrap 5.

API affectées

AddDefaultIdentity<TUser>(IServiceCollection)