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"
。
受影响的 API
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈