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