IIS : Les chaînes de requête de l’intergiciel (middleware) UrlRewrite sont conservées

Un défaut d’intergiciel IIS UrlRewrite empêchait la conservation de la chaîne de requête dans les règles de réécriture. Ce défaut a été résolu pour maintenir la cohérence avec le comportement du module URLRewrite IIS.

Pour plus d’informations, consultez le problème dotnet/aspnetcore#22972.

Version introduite

ASP.NET Core 5.0

Ancien comportement

Considérez la règle de réécriture suivante :

<rule name="MyRule" stopProcessing="true">
  <match url="^about" />
  <action type="Redirect" url="/contact" redirectType="Temporary" appendQueryString="true" />
</rule>

La règle précédente n’ajoute pas la chaîne de requête. Un URI comme /about?id=1 redirige vers /contact au lieu de /contact?id=1. L’attribut appendQueryString est également défini par défaut sur true.

Nouveau comportement

La chaîne de requête est conservée. L’URI de l’exemple dans Ancien comportement serait /contact?id=1.

Raison du changement

L’ancien comportement ne correspondait pas au comportement du module URLRewrite IIS. Pour prendre en charge le portage entre l’intergiciel et le module, l’objectif est de maintenir des comportements cohérents.

Si le comportement de suppression de la chaîne de requête est préférable, définissez l’élément action sur appendQueryString="false".

API affectées

IISUrlRewriteOptionsExtensions.AddIISUrlRewrite