【发布时间】:2020-04-06 07:17:13
【问题描述】:
我有一个非常简单的 ASP.NET Core API。我正在向该服务发送标头,它运行良好。
但问题是,当我在请求标头中发送诸如“á”之类的字符时,请求会以400: Bad request 失败。
我知道这不是客户端的问题——我针对 Java API 测试了相同的代码并且它可以工作。我也用 Postman 重现了同样的问题。
如何告诉服务器在请求标头中接受 UTF-8?
[HttpPut("/api/Test")]
public IActionResult test([FromHeader(Name = "Word")] String word)
{
return Ok("I accepted your request");
}
编辑:
它适用于 3.1,所以现在我们知道这与 2.1 相关。
【问题讨论】:
-
我认为目前不支持此功能:github.com/dotnet/aspnetcore/issues/4727
-
抱歉,这是回复。我相信此更改支持标头:github.com/aspnet/KestrelHttpServer/pull/2867/files
-
@MartinCostello 那么,我该如何实现呢?
-
仅供参考:由于@CyrilDurand 报告说这适用于 ASP.NET Core 3.0+,而@CarlosLópezMarí 报告说这是在 ASP.NET Core 2.1 上,我已经添加了
asp.net-core-2.1标签到这个发布,因为它似乎可能是以前版本的 ASP.NET 的特定问题。 (不过,如果是这样,我想可能有关于该主题的 GitHub 问题;我没有看过。) -
@JeremyCaney 我使用 2.1 重现了该问题,但没有使用 2.2。以下 github 问题包含有关此行为 github.com/aspnet/KestrelHttpServer/issues/1144 的许多有趣信息。您能否升级到 v2.2 或不使用 Kestrel ?
标签: c# asp.net-core asp.net-web-api character-encoding asp.net-core-2.1