Sdílet prostřednictvím


IIS: Řetězce dotazů middlewaru UrlRewrite se zachovají.

Chyba middlewaru URLRewrite služby IIS zabránila zachování řetězce dotazu v pravidlech přepsání. Tato chyba byla opravena, aby se zachovala konzistence s chováním modulu URLRewrite služby IIS.

Diskuzi najdete v tématu problému dotnet/aspnetcore#22972.

Zavedená verze

ASP.NET Core 5.0

Staré chování

Zvažte následující pravidlo přepsání:

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

Předchozí pravidlo nepřidá řetězec dotazu. Identifikátor URI, jako /about?id=1 je přesměrování místo /contact /contact?id=1. Výchozí appendQueryString hodnota atributu true je také.

Nové chování

Řetězec dotazu se zachová. Identifikátor URI z příkladu ve starém chování by byl /contact?id=1.

Důvod změny

Původní chování neodpovídá chování modulu URLRewrite služby IIS. Cílem podpory přenosu mezi middlewarem a modulem je udržovat konzistentní chování.

Pokud je upřednostňované chování odebrání řetězce dotazu, nastavte action prvek na appendQueryString="false".

Ovlivněná rozhraní API

IISUrlRewriteOptionsExtensions.AddIISUrlRewrite