Share via


IIS: as cadeias de caracteres de consulta de middleware UrlRewrite são preservadas

Um defeito de middleware UrlRewrite do IIS impedia que a cadeia de caracteres de consulta fosse preservada nas regras de regravação. Esse defeito foi corrigido para manter a consistência com o comportamento do Módulo UrlRewrite do IIS.

Para discussão, consulte o problema dotnet/aspnetcore#22972.

Versão introduzida

ASP.NET Core 5.0

Comportamento antigo

Considere a seguinte regra de regravação:

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

A regra anterior não acrescenta a cadeia de caracteres de consulta. Um URI como /about?id=1 redireciona para /contact vez de /contact?id=1. O atributo appendQueryString também assume o padrão true.

Novo comportamento

A cadeia de caracteres de consulta é preservada. O URI do exemplo no Comportamento antigo seria /contact?id=1.

Motivo da alteração

O comportamento antigo não correspondia ao comportamento do Módulo UrlRewrite do IIS. Para oferecer suporte à portabilidade entre o middleware e o módulo, a meta é manter comportamentos consistentes.

Se o comportamento de remoção da cadeia de caracteres de consulta for preferencial, defina o elemento action como appendQueryString="false".

APIs afetadas

IISUrlRewriteOptionsExtensions.AddIISUrlRewrite