【问题标题】:% not accepted as part of the string parameter in Web API% 不被接受为 Web API 中字符串参数的一部分
【发布时间】:2019-08-25 03:34:45
【问题描述】:

我想向我的 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 未找到” 名称:“HttpErrorResponse” 好的:假的 状态:404 状态文本:“未找到” 网址:“http://localhost:31676/api/TokenTest/check-token-validation/96/TCmBqAKPGVMlTQ2Exw%2FviQ%3D%3D原型:HttpResponseBase

【问题讨论】:

    标签: angular asp.net-web-api asp.net-core-webapi http-get


    【解决方案1】:

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

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

    【讨论】:

      【解决方案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==,你会得到正确的结果:

      但总是建议使用 url 编码。

      【讨论】:

        猜你喜欢
        • 2018-10-11
        • 1970-01-01
        • 1970-01-01
        • 2017-08-11
        • 2015-11-29
        • 1970-01-01
        • 2017-05-23
        • 2021-06-02
        • 2014-09-14
        相关资源
        最近更新 更多