.NET 6 Web API 收到错误的查询参数

.NET 6 web API receive wrong query parameters

提问人:Duc Thang 提问时间:10/16/2023 最后编辑:Peter MortensenDuc Thang 更新时间:10/18/2023 访问量:70

问:

我正在使用查询参数向我的服务器调用 GET 方法,但它收到“avanced”(缺少字母 d)。 然后我尝试使用“adtanced”这个词(将 v 更改为 t),我的服务器正确获取参数。 这是一个非常奇怪的错误,花费了我很多时间进行研究。我不知道我的 .NET 6 Web API 服务器中是否缺少任何配置。courseTierSlug=advanced

以下是图片供您参考:

Enter image description here

Enter image description here

C# ASP.NET-WEB-API NET-6.0 查询字符串

评论

0赞 Roe 10/16/2023
每个包含“dv”的单词都会发生这种情况吗?
0赞 Jivopis 10/16/2023
只是好奇,您是否尝试将邮递员中的参数名称从 更改为 ?CourseTierSlugcourseTierSlug
0赞 Duc Thang 10/17/2023
我确实按照您的建议更改了参数名称,但没有什么不同,我发现字符串中第一个字母“v”前面的字母在传递到服务器时会消失
0赞 Peter Mortensen 10/18/2023
背景是什么?例如,什么 Web 服务器(包括版本)?Web 服务器的操作系统(包括版本和版本)是什么?在哪里运行(本地、托管、云等)?什么客户端计算机(包括硬件和操作系统(包括版本)?客户端和服务器之间有什么样的网络连接?是否可以将问题隔离到其中任何一个 - 服务器、客户端、网络以及它们的特定版本?请通过编辑(更改)您的问题来回答,而不是在这里 -
0赞 Peter Mortensen 10/18/2023
续' - 在评论中(但是 *** *** *** *** 问题应该看起来像今天写的一样)。

答:

-2赞 Neo Tsehle 10/17/2023 #1

当您在 API 中遇到意外行为时,这当然令人沮丧。您描述的问题可能与 URL 编码和解码有关。

在本例中,查询参数“courseTierSlug=advanced”被解释为“avanced”(缺少字母“d”),但“adtanced”(将“v”更改为“t”)被正确处理。

这种差异可能是由于 URL 参数在客户端或服务器端的编码或解码方式引起的。在将参数值发送到服务器之前,请确保客户端正确编码参数值,并且服务器正确解码查询参数。

在服务器端,您可能希望检查如何分析和访问查询参数。确保在此阶段不会发生意外转换。

此外,请考虑检查任何中间件或自定义逻辑,这些中间件或自定义逻辑可能会在查询参数值遍历 API 管道时受到影响。

如果问题仍然存在,您可以分享有关 API 配置、代码片段或您正在使用的任何自定义中间件的更多详细信息。这将有助于社区提供更有针对性的帮助,以确定根本原因并找到解决方案。

请记住,调试这些问题可能是一个消除过程,因此耐心和有条不紊的调查是关键。如果您需要进一步的帮助,请随时寻求有关代码或配置的特定帮助。祝你好运,解决这个不寻常的错误!

评论

2赞 NotTheDr01ds 10/18/2023
欢迎使用 Stack Overflow。请花点时间阅读为什么发布 GPT 和 ChatGPT 生成的答案目前是不可接受的。我们希望您将来能通过发布自己的高质量问题和答案成为社区的重要成员。谢谢!