Dela via


IIS: UrlRewrite-frågesträngar för 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.

Mer information finns i problem med dotnet/aspnetcore#22972.

Version introducerad

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 omdirigeras till i stället /contact?id=1för /contact . Attributet appendQueryString är true också standard.

Nytt beteende

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

Orsak till ändringen

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