Freigeben über


IIS: Abfragezeichenfolgen für die UrlRewrite-Middleware werden beibehalten

Ein IIS UrlRewrite Middleware-Fehler verhinderte, dass die Abfragezeichenfolge in Neuschreibregeln beibehalten wird. Dieser Fehler wurde behoben, um die Konsistenz mit dem Verhalten des IIS UrlRewrite-Moduls aufrechtzuerhalten.

Zur Diskussion siehe dotnet/aspnetcore#22972.

Eingeführte Version

ASP.NET Core 5.0

Altes Verhalten

Beachten Sie die folgende Neuschreibregel:

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

Die vorstehende Regel fügt die Abfragezeichenfolge nicht an. Ein URI wie /about?id=1 leitet zu /contact weiter, anstatt zu /contact?id=1. Das Attribut appendQueryString ist standardmäßig auf true festgelegt.

Neues Verhalten

Die Abfragezeichenfolge wird beibehalten. Der URI aus dem Beispiel im alten Verhalten lautet /contact?id=1.

Grund für Änderung

Das alte Verhalten stimmte nicht mit dem Verhalten des IIS-UrlRewrite-Moduls überein. Um die Portierung zwischen Middleware und Modul zu unterstützen, besteht das Ziel darin, konsistente Verhaltensweisen aufrechtzuerhalten.

Wenn das Verhalten des Entfernens der Abfragezeichenfolge bevorzugt wird, legen Sie das action Element auf appendQueryString="false".

Betroffene APIs

IISUrlRewriteOptionsExtensions.AddIISUrlRewrite