IIS: строки запроса ПО промежуточного слоя UrlRewrite сохраняются
Ошибки в ПО промежуточного слоя IIS UrlRewrite не позволили сохранить строку запроса в правиле перезаписи. Эта ошибка исправлена, чтобы обеспечить соответствие поведению модуля IIS UrlRewrite.
Обсуждение этого вопроса см. на странице dotnet/aspnetcore#22972.
Представленные версии
ASP.NET Core 5.0
Старое поведение
Рассмотрим следующее правило перезаписи.
<rule name="MyRule" stopProcessing="true">
<match url="^about" />
<action type="Redirect" url="/contact" redirectType="Temporary" appendQueryString="true" />
</rule>
Предыдущее правило не присоединяет строку запроса. Универсальный код ресурса (URI), такой как /about?id=1
, перенаправляет в /contact
вместо /contact?id=1
. По умолчанию атрибут appendQueryString
имеет значение true
.
Новое поведение
Строка запроса сохраняется. Код URI из примера в разделе Старое поведение будет иметь значение /contact?id=1
.
Причина изменения
Старое поведение не соответствовало поведению модуля IIS UrlRewrite. Для поддержки переноса между ПО промежуточного слоя и модулем важно обеспечить согласованное поведение.
Рекомендуемое действие
Если удаление строки запроса является предпочтительным поведением, следует установить для элемента action
значение appendQueryString="false"
.