Параметр String, переданный в restful WebApi, не декодируется - PullRequest
0 голосов
/ 21 января 2020

У меня есть следующий метод в WebApi (. Net Core 3.1)

[ApiController]
[Route("api/Stuff")]
[RequireHttps]
public class MyController : ControllerBase
{
    [HttpGet]
    [Route("Get/{loc}/{userId}/{appId}")]
    [ProducesResponseType(StatusCodes.Status200OK)]
    [ProducesResponseType(StatusCodes.Status400BadRequest)]
    public async Task<ActionResult<List<string>>> GetDataAsync(string loc, string userId, Guid appId)

Когда я хочу вызвать это, я использую следующее:

@$"https://localhost:44354/api/Stuff/Get/{HttpUtility.UrlEncode("http://www.example.com/abc/def/ghi")}/{HttpUtility.UrlEncode("someone@somewhere.com")}/{HttpUtility.UrlEncode(Guid.NewGuid().ToString())}".Dump();

I вероятно, не нужно UrlEncode всех этих свойств, но я только что сделал это для полноты. Это, безусловно, требуется для первого, который содержит косые черты.

Однако, когда внутри метода GetDataAsyn c, я проверяю свойства и вижу:

lo c = http:% 2f% 2f www.example.com%2fabc%2fdef%2fghi

userId = someone@somewhere.com

appId = a8f4328e-9149-4f9a-bd64-0cd539f1c579

Итак, почему первый параметр не был декодирован URL, где другие?

...