IIS: Frågesträngar i UrlRewrite-mellanprogram bevaras

En IIS UrlRewrite-mellanprogramsdefekt förhindrade att frågesträngen bevarades i omskrivningsregler. Den defekten har åtgärdats för att upprätthålla konsekvens med IIS UrlRewrite-modulens beteende.

För diskussion, se fråga dotnet/aspnetcore#22972.

Version lanserad

ASP.NET Core 5.0

Gammalt beteende

Överväg följande omskrivningsregel:

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

Föregående regel lägger inte till frågesträngen. En URI som /about?id=1 omdirigerar till /contact i stället för /contact?id=1. Attributet appendQueryString har också standardvärdet true.

Nytt beteende

Frågesträngen bevaras. URI:n från exemplet i Gammalt beteende skulle vara /contact?id=1.

Orsak till ändring

Det gamla beteendet matchade inte IIS UrlRewrite-modulens beteende. För att stödja portning mellan mellanprogram och modul är målet att upprätthålla konsekventa beteenden.

Om du föredrar att ta bort frågesträngen anger du elementet action till appendQueryString="false".

Berörda API:er

IISUrlRewriteOptionsExtensions.AddIISUrlRewrite