Asp.net core 当Url包含非ASCII字符时,我得到404错误(asp.net core+;kestler)
我有一个多语言网站,当用户更改当前语言或单击页面链接时,页面将被重定向到所选语言。因此,传递的重定向URL可能包含非ASCII字符 我有一个重写类(Asp.net core 当Url包含非ASCII字符时,我得到404错误(asp.net core+;kestler),asp.net-core,razor,asp.net-core-2.2,non-ascii-characters,kestrel,Asp.net Core,Razor,Asp.net Core 2.2,Non Ascii Characters,Kestrel,我有一个多语言网站,当用户更改当前语言或单击页面链接时,页面将被重定向到所选语言。因此,传递的重定向URL可能包含非ASCII字符 我有一个重写类(Microsoft.AspNetCore.Mvc.Infrastructure.RedirectResultExecutor): 如有任何建议,我们将不胜感激:):)你们有什么想法吗?:)您是否可以显示请求的完整日志(您可以将日志记录级别设置为“调试”)在你appsettings.Development.json中,如果你使用vs,那么你的路由配置是
Microsoft.AspNetCore.Mvc.Infrastructure.RedirectResultExecutor
):
如有任何建议,我们将不胜感激:):)你们有什么想法吗?:)您是否可以显示请求的完整日志(您可以将日志记录级别设置为“调试”)在你
appsettings.Development.json
中,如果你使用vs,那么你的路由配置是什么样子?@XingZou是的,但这是我们的实时网站,调试和检查日志有点困难,因为这个随机错误。如果我发现任何新的细节,我会更新问题。谢谢你最好通过设置来显示你请求的完整日志“Debug”:{“LogLevel”:{“Default”:“Debug”},@XingZou这是一个随机错误,但我会尝试在日志中找到它
/// <param name="result">Redirect result</param>
/// <returns>Task that represents the asynchronous operation</returns>
public override Task ExecuteAsync(ActionContext context, RedirectResult result)
{
if (result == null)
throw new ArgumentNullException(nameof(result));
if (_securitySettings.AllowNonAsciiCharactersInHeaders)
{
//passed redirect URL contains non-ASCII characters
result.Url = Uri.EscapeUriString(WebUtility.UrlDecode(result.Url));
}
return base.ExecuteAsync(context, result);
}
//passed redirect URL may contain non-ASCII characters,
//that are not allowed in kestler so i force to decode and it cause i get weird URL.
result.Url = Uri.EscapeUriString(WebUtility.UrlDecode(result.Url));