%不被接受为Web API中字符串参数的一部分

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

我想将一个字符串参数发送到我的Web API端点。字符串是:TCmBqAKPGVMlTQ2Exw/viQ==,因此我们看到它包含/。我正在编码此字符串,现在值为TCmBqAKPGVMlTQ2Exw%2FviQ%3D%3D,但我仍然无法访问API端点。

这是我得到的错误:

headers: HttpHeaders {normalizedNames: Map(0), lazyUpdate: null, lazyInit: ƒ}
message: "Http failure response for http://localhost:31676/api/TokenTest/check-token-validation/96/TCmBqAKPGVMlTQ2Exw%2FviQ%3D%3D:

404 Not Found“name:”HttpErrorResponse“ok:false status:404 statusText:”Not Found“url:”http://localhost:31676/api/TokenTest/check-token-validation/96/TCmBqAKPGVMlTQ2Exw%2FviQ%3D%3D“proto:HttpResponseBase

angular asp.net-web-api asp.net-core-webapi http-get
2个回答
2
投票

如果您使用的是Attribute routing,可以尝试下面的代码示例:

[Route("api/[controller]")]
[ApiController]
public class TokenTestController : ControllerBase
{
    [HttpGet]
    [Route("check-token-validation/{id}")]
    public ActionResult<IEnumerable<string>> CheckTokenValidation(int id, string para)
    {
        return new string[] { "value1", "value2" };
    }
}

如果请求是https://localhost:xxxx/api/TokenTest/check-token-validation/96?para=TCmBqAKPGVMlTQ2Exw/viQ==,您将得到正确的结果:

enter image description here

但总是建议使用url编码。


1
投票

您可以使用函数encodeURIComponent(yourstring)来编码URL中的特殊字符。

并将网址更改为http://localhost:31676/api/TokenTest/check-token-validation/96?parameterName=TCmBqAKPGVMlTQ2Exw%2FviQ%3D%3D

© www.soinside.com 2019 - 2024. All rights reserved.