IIS: le stringhe di query del middleware UrlRewrite vengono mantenute

Un difetto del middleware URLRewrite IIS impediva la conservazione della stringa di query nelle regole di riscrittura. Questo difetto è stato risolto per mantenere la coerenza con il comportamento del modulo UrlRewrite IIS.

Per informazioni, vedi il problema dotnet/aspnetcore#22972.

Versione introdotta

ASP.NET Core 5.0

Comportamento precedente

Considera la regola di riscrittura seguente:

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

La regola precedente non accoda la stringa di query. Un URI come /about?id=1 reindirizza a /contact anziché a /contact?id=1. Anche l'attributo appendQueryString è impostato come predefinito su true.

Nuovo comportamento

La stringa di query viene mantenuta. L'URI dell'esempio in Comportamento precedente sarebbe /contact?id=1.

Motivo della modifica

Il comportamento precedente non corrisponde al comportamento del modulo UrlRewrite IIS. Per supportare la conversione tra il middleware e il modulo, l'obiettivo è mantenere comportamenti coerenti.

Se si preferisce il comportamento che rimuove la stringa di query, impostare l'elemento action su appendQueryString="false".

API interessate

IISUrlRewriteOptionsExtensions.AddIISUrlRewrite