У меня есть следующий метод в 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, где другие?