Как передавать в часть пути HTTP запроса значение содержащее `/`?
Используем ASP.NET 6. Есть контролер, где в путь подставляются значения docNumber
и hash
:
[ApiController]
[Route("api/v2/")]
public class GuaranteeController : ControllerBase
{
[HttpPost("file/{docNumber}/{hash}")]
public async Task<IActionResult> AddFile(
[Required()] IFormFile formFile,
[FromRoute, Required(AllowEmptyStrings = false)] string docNumber,
[FromRoute, Required(AllowEmptyStrings = false)] string hash)
{
///
}
}
Далее для docNumber пытаемся передать значение ББ-0007010/2022
. Кодируем это значение с помощью `Uri.EscapeDataString:
Uri.EscapeDataString("ББ-0007010/2022") // вернёт "%D0%91%D0%91-0007010%2F2022"
Получаем Uri
https://localhost:5000/file/%D0%91%D0%91-0007010%2F2022/4ead1aaf295f25e8f7deff0eecce085
А далее возникает проблема в методе AddFile
. При вызове этого метода аргументу docNumber
задаётся значение ББ-0007010%2F2022
. Т.е. символ /
не декодируется.
Как этого избежать? Т.е. как сделать так, чтобы символ %2F также декодировался в '/'?
Источник: Stack Overflow на русском