次の方法で共有


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ではなく/contact?id=1にリダイレクトされます。 appendQueryString属性もデフォルトでtrueに設定されます。

新しい動作

クエリ文字列は保持されます。 古い動作の例の URI は/contact?id=1されます。

変更の理由

以前の動作は、IIS UrlRewrite モジュールの動作と一致しませんでした。 ミドルウェアとモジュール間の移植をサポートするために、目標は一貫した動作を維持することです。

クエリ文字列を削除する動作が優先される場合は、 action 要素を appendQueryString="false"に設定します。

影響を受ける API

IISUrlRewriteOptionsExtensions.AddIISUrlRewrite