WebAPI 获取在控制器处被 UrlDecoded 的请求参数

WebAPI get request parameters being UrlDecoded at the controller

我在向 WebAPI 控制器发出 GET 时遇到问题,本质上是:

$.getJSON('/api/feefo/getproductfeedback?id='+ encodeURIComponent(skuNum))

我正在使用 encodeURIComponent 来 url 编码 skuNum 参数,在开发工具中查看请求,我得到了 skuNum 的预期结果,需要被编码:

skuNum 已按预期从 1000EF+ 变为 1000EF%2B

但是,当我在 WebAPI 控制器中查看 id 参数时,它是通过未编码的:

好像客户端 url 编码被以某种方式取消了,谁能解释一下这是怎么回事?显然我可以通过在控制器中进行编码来解决这个问题,但我想了解为什么会这样。

这是设计使然。默认情况下,API 框架将解码 URL 编码的参数。编码应该只用于传输数据。一旦在服务器上,开发人员就不必处理必须对其进行解码的问题(横切问题)。按预期使用该值。