ASP.NET - 路由参数中的%2F(正斜杠)百分比编码字符未解码

问题描述 投票:0回答:2

我有以下简单的控制器,它只接受路由参数中的字符串并按原样返回:

[HttpGet("string/{value}")]
public ActionResult Echo([FromRoute] string value)
{
    return new JsonResult(new { output = value });
}

当我在字符串中提供除“%2F”之外的任何百分比编码字符时,它工作正常,即它返回相应的字符串表示形式:

/string/%21%23%28 -> { "output": "!#(" }

但是,对于 %2F,它似乎返回百分比编码的字符串本身,而不是相应的正斜杠字符,即“/”:

/string/%2F -> { "output": "%2F" }

如何要求它在输出中返回“/”而不是“%2F”?

c# asp.net asp.net-web-api urlencode
2个回答
0
投票

虽然这是一个老问题,但您可以使用

HttpUtility.UrlDecode(value)
让它解码它在控制器端点上编码的内容。

这里是类似问题的更深入答案的链接https://stackoverflow.com/a/46255640/759645


-1
投票

试试这个

value=value.Replace("%2F","/")
return new JsonResult(new { output =  value });
© www.soinside.com 2019 - 2024. All rights reserved.