다음을 통해 공유


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

IISUrlRewriteOptionsExtensions.AddIISUrlRewrite