Freigeben über


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

Ein Fehler bei der IIS-UrlRewrite-Middleware hat verhindert, dass die Abfragezeichenfolge in Neuschreibungsregeln beibehalten wird. Dieser Fehler wurde behoben, um Konsistenz mit dem Verhalten des IIS-UrlRewrite-Moduls sicherzustellen.

Weitere Informationen finden Sie im Issue dotnet/aspnetcore#22972.

Eingeführt in Version

ASP.NET Core 5.0

Altes Verhalten

Sehen Sie sich die folgende Neuschreibungsregel an:

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

Die obige Regel fügt die Abfragezeichenfolge nicht an. Bei einem URI wie /about?id=1 findet eine Weiterleitung zu /contact anstelle von /contact?id=1 statt. Außerdem ist das Attribut appendQueryString standardmäßig auf true festgelegt.

Neues Verhalten

Die Abfragezeichenfolge wird beibehalten. Der URI aus dem Beispiel unter Altes Verhalten wäre dann /contact?id=1.

Grund für die Änderung

Das alte Verhalten entsprach nicht dem des IIS-UrlRewrite-Moduls. Damit ein Übertragen zwischen Middleware und Modul unterstützt wird, soll ein konsistentes Verhalten gewährleistet sein.

Wenn Sie das Entfernen der Abfragezeichenfolge als Verhalten bevorzugen, legen Sie im action-Element appendQueryString="false" fest.

Betroffene APIs

IISUrlRewriteOptionsExtensions.AddIISUrlRewrite