如何防止 ASP.net 核心中的默认 url 解码

How to prevent default url decoding in ASP.net core

在我的控制器中,我有一个接受字符串的 HTTP get 方法

[HttpGet("{token}"]
public async Task<IActionResult> GetFoo(string token) 
{
     //Some actine
     return Ok(object);
 }

如果我发送下面编码的令牌 test%2Atest,ASP .NET 默认会将此令牌解码为 test*test。但是,如果我发送 test%2Ftest,它不会将 %2F 解码为 /

我能理解为什么 ASP.NET 不这样做,因为它会破坏路线。

有没有办法禁用此默认行为,以便我可以在我的控制器中取消解码?

我这边有几个测试结果,但我觉得不是你想要的。

我想你是否可以使用这种parameter-receiving方法?

https://localhost:44393/api/hello?token=test%2FParam

[HttpGet]
public string Index(string token)
{
    return token;
}

我找不到在 ASP.net 内核中禁用默认 URL 解码的方法。

正如上面 Tiny Wang 所建议的,我更改了应用程序以在 header 中发送令牌并解决了问题。