IIS: Ciągi zapytań oprogramowania pośredniczącego UrlRewrite są zachowywane
Usterka oprogramowania pośredniczącego IIS UrlRewrite uniemożliwiła zachowanie ciągu zapytania w regułach ponownego zapisywania. Ta usterka została naprawiona w celu zachowania spójności z zachowaniem modułu URLRewrite usług IIS.
Aby zapoznać się z dyskusją, zobacz problem dotnet/aspnetcore#22972.
Wprowadzona wersja
ASP.NET Core 5.0
Stare zachowanie
Rozważmy następującą regułę ponownego zapisywania:
<rule name="MyRule" stopProcessing="true">
<match url="^about" />
<action type="Redirect" url="/contact" redirectType="Temporary" appendQueryString="true" />
</rule>
Poprzednia reguła nie dołącza ciągu zapytania. Identyfikator URI, taki jak /about?id=1
przekierowania do /contact
zamiast /contact?id=1
. Atrybut appendQueryString
jest również true
domyślny.
Nowe zachowanie
Ciąg zapytania jest zachowywany. Identyfikator URI z przykładu w starym zachowaniu to /contact?id=1
.
Przyczyna wprowadzenia zmiany
Stare zachowanie nie pasuje do zachowania modułu URLRewrite usług IIS. Aby obsługiwać przenoszenie między oprogramowaniem pośredniczącym a modułem, celem jest zachowanie spójnych zachowań.
Zalecana akcja
Jeśli preferowane jest zachowanie usuwania ciągu zapytania, ustaw action
element na appendQueryString="false"
wartość .