Bagikan melalui


IIS: String kueri middleware UrlRewrite dipertahankan

Cacat middleware IIS UrlRewrite mencegah string kueri dipertahankan dalam aturan penulisan ulang. Cacat tersebut telah diperbaiki untuk menjaga konsistensi dengan perilaku Modul UrlRewrite IIS.

Untuk diskusi, lihat masalah dotnet/aspnetcore#22972.

Versi yang diperkenalkan

ASP.NET Core 5.0

Perilaku yang lama

Pertimbangkan aturan penulisan ulang berikut:

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

Aturan sebelumnya tidak menambahkan string kueri. URI seperti /about?id=1 mengalihkan ke /contact alih-alih /contact?id=1. Atribut appendQueryString default ke true juga.

Perilaku yang baru

String kueri dipertahankan. URI dari contoh dalam Perilaku lama adalah /contact?id=1.

Alasan untuk berubah

Perilaku lama tidak cocok dengan perilaku Modul UrlRewrite IIS. Untuk mendukung porting antara middleware dan modul, tujuannya adalah untuk mempertahankan perilaku yang konsisten.

Jika perilaku menghapus string kueri lebih disukai, atur elemen ke action appendQueryString="false".

API yang Terpengaruh

IISUrlRewriteOptionsExtensions.AddIISUrlRewrite