Points de terminaison de fichier de secours

L’attribut ConsumesAttribute permet aux actions du contrôleur de spécifier leurs types de contenu pris en charge. À compter de .NET 6, si un point de terminaison de fichier de secours a été configuré, il peut correspondre à des routes qui ont été rejetées, car la requête avait un type de contenu différent de celui spécifié dans le ConsumesAttribute d’une action. Le comportement de .NET 6 était un changement indésirable du comportement par rapport à .NET 5. Ce changement cassant résout partiellement le problème en faisant en sorte que les points de terminaison de fichier de secours correspondent seulement aux requêtes GET et HEAD.

Version introduite

ASP.NET Core 7.0 RC 2

Comportement précédent

Les points de terminaison configurés avec des requêtes StaticFilesEndpointRouteBuilderExtensions.MapFallbackToFile correspondaient à des requêtes effectuées avec n’importe quelle méthode de requête.

Nouveau comportement

Les points de terminaison configurés avec StaticFilesEndpointRouteBuilderExtensions.MapFallbackToFile correspondent seulement aux requêtes HEAD et GET.

Type de changement cassant

Ce changement peut affecter la compatibilité binaire.

Raison du changement

Ce changement rétablit partiellement un changement cassant plus important introduit accidentellement dans .NET 6. Comme il est très inhabituel de s’attendre à une réponse de fichier de secours lors de l’exécution d’une requête avec une méthode autre que HEAD ou GET, l’impact de ce changement cassant devrait être minime.

Si vous voulez que les points de terminaison de fichier de secours correspondent aux requêtes avec des méthodes autres que HEAD ou GET, vous pouvez spécifier des méthodes de requête HTTP supplémentaires en utilisant WithMetadata(). Par exemple :

endpoints.MapFallbackToFile("index.html")
    .WithMetadata(new HttpMethodMetadata(new[] { /* List supported methods here */ }));

API affectées