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>
上記の規則では、クエリ文字列は追加されません。
/about?id=1のような URI は、/contactではなく/contact?id=1にリダイレクトされます。
appendQueryString属性もデフォルトでtrueに設定されます。
新しい動作
クエリ文字列は保持されます。
古い動作の例の URI は/contact?id=1されます。
変更の理由
以前の動作は、IIS UrlRewrite モジュールの動作と一致しませんでした。 ミドルウェアとモジュール間の移植をサポートするために、目標は一貫した動作を維持することです。
推奨されるアクション
クエリ文字列を削除する動作が優先される場合は、 action 要素を appendQueryString="false"に設定します。
影響を受ける API
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET