【发布时间】:2022-01-06 22:24:13
【问题描述】:
我正在使用 .NET Core 3.1 开发一个 WebAPI 项目,并且我有一个具有以下操作的控制器:
public class MyApiController : Controller
{
[HttpGet("api/custom")]
public async Task<IActionResult> Custom([FromQuery(Name = "data")] string data)
{
}
}
我注意到我的 URL 的数据部分是自动转义的,所以如果我点击我的服务
service.com/api/custom?data=X%3D%3D%2BY 那么操作方法中的数据字段将出于某种原因保留 X== Y。我认为这是错误的,因为 %2B 应该是 +。
在一个空项目中,上面的代码sn-p正确地变成了X==+Y。在我的大型项目中,数据参数是 X== Y。
我想知道是否有一种好方法可以以某种方式控制这种逃避行为?
[更新] 如评论中所述,如果您在新项目中执行此操作,则控制器将为您提供正确的解码字符串 X==+Y。更新我的问题以询问如何解决此类问题?
【问题讨论】:
-
我测试了你的代码,得到了预期的
X==+Y(With method body =return Ok(data);) -
是的,你是对的。我创建了一个单独的控制器,它的行为与您描述的一样。但是在这个特定的控制器中,确实将 %2B 转换为 SPACE 而不是 +。我不确定它有什么不同。我会调查并更新我的问题
标签: c# .net-core asp.net-core-webapi