Как передавать в часть пути HTTP запроса значение содержащее `/`?

Рейтинг: 0Ответов: 0Опубликовано: 11.08.2023

Используем 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 также декодировался в '/'?

Ответы

Ответов пока нет.