Udostępnij za pośrednictwem


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ń.

Jeśli preferowane jest zachowanie usuwania ciągu zapytania, ustaw action element na appendQueryString="false"wartość .

Dotyczy interfejsów API

IISUrlRewriteOptionsExtensions.AddIISUrlRewrite