【发布时间】:2018-08-30 23:15:50
【问题描述】:
使用此代码...
using (HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get,
"https://example.com/?var=a%3Ab%3Dc%26d%3Fe")
{
// Do stuff
}
...request.RequestUri 现在的值是“https://example.com/?var=a:b%3Dc%26d%3Fe”
请注意 %3A 未编码为冒号字符,但所有其他已编码字符仍保持编码状态。
如何防止 %3A 像所有其他编码字符一样被未编码?
对于上下文,我正在调用外部 API。冒号会引发错误。我无法控制外部 API,因此需要找到一种符合 API 编码预期的方法。
【问题讨论】:
-
字符串“example.com/?var=a%3Ab%3Dc%26d%3Fe”从何而来?
-
根据我的回答,我认为这不是 ASP.NET Core 中的问题,而只是 .NET Frameworks 中的问题。您能否确认您是否真的在使用 ASP.NET Core?如果没有,您应该将其从标题和标签中删除。
-
阿德里安,谢谢。我可以确认目标框架是 .NET Core 1.1。我升级到 .NET Core 2.0 看看是否可以解决问题。没有运气。我将考虑升级到 .NET Core 2.1.401,因为您似乎已经在该版本中找到了修复。将发布结果。
-
@Chas,没问题。您可能还想修复问题的标记,然后将其标记为 .net-core 或 .net-core-1.1 而不是 asp.net、.net、asp.net-core-mvc,以便明确这是您的问题的平台涉及到。