- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用此代码...
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 编码期望的方法。
最佳答案
我认为这个行为描述有点奇怪,所以我决定自己测试一下,实际上在 .NET Framework 4.5.1 和 4.7.1 中,%3A
被解码为a :
由 HttpRequestMessage
类实现。
但是在 .NET Core 2.1.401 中,如果原始字符串保持不变,则不会发生相同的行为。
因此,这很可能是 .NET Framework 中的 HttpRequestMessage
实现的错误,该错误未复制到 .NET Core(完全重写)。
我没有时间自己做,但我建议在 .NET Framework GitHub project 中提出错误。 ,引用此堆栈溢出帖子。
您还可以在 .NET Developer Community 上发布您的问题还可以获得一些建议和解决方法。
除此之外,我想不出任何解决方法来解决您的问题。
更新1:
正当我准备转向其他内容时,我意识到 System.Uri
类在执行 ToString()
时实际上正在执行此错误。
以下代码为例:
Uri uri = new Uri("https://example.com/?var=a%3Ab%3Dc%26d%3Fe");
var original = uri.OriginalString;
var toString = uri.ToString();
可以看到,原始字符串是正确的,但是ToString()的结果是错误的。
更新2:
现在发生的事情已经更加明显了,我能够挖掘出这个旧的 stackoverflow 帖子:System.Uri and encoded colon (:)还有这个social MSDN post 。两者都是很久以前创建的,看起来 .NET 团队从未决定解决这个问题。我无法访问 Microsoft Connect bug raised我想知道它的结果,但 .NET Framework GitHub 项目和 .NET 开发人员社区页面仍然可能是直接从 .NET 团队获得响应的最佳位置。 (社交 MSDN 站点主要是非 Microsoft 人员,因此不会那么有帮助)。
关于.net-core - 如何阻止 HttpRequestMessage 将请求 URI 中的 %3A 取消编码为冒号 (asp.net core),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52106567/
我正在尝试发送 json “样式”字符串通过 HttpResponseMessage . 我创建了以下方法,希望能够成功发送响应消息。 class Foo { /// /// Ven
我有一个 Controller Action : [HttpPost] [EnableQuery] [ODataRoute("PostData")] public async Task PostDat
我的任务是整合 Amazon Gift Codes On Demand (AGCOD)安静的 API。我们需要使用 Signature Version 4 签署我们的请求,由他们执行的操作 AWS S
我有一个向服务器发送 POST 请求的方法。该请求在 HttpRequestMessage 对象中定义。 然而,如果服务器返回一些可重试错误,我想重试,如下面的代码: using (var reque
我正在尝试使用此答案中概述的方法克隆请求: https://stackoverflow.com/a/18014515/406322 但是,如果原始请求有内容,我会得到一个 ObjectDisposed
在 winrt 中是否有任何内置函数将摘要身份验证与 HttpRequestMessage 相关联?还是我必须使用其他类才能执行此任务? 谢谢。 最佳答案 我正在使用 HttpClient对于 Htt
我正在尝试发送一个将其用户代理设置为带有冒号的内容的请求,但是 HttpRequestMessage提示冒号是无效字符。 确切的代码看起来像这样: HttpClient client = new Ht
假设我有一个像这样构建的 HttpRequestMessage 对象: var request = new HttpRequestMessage(HttpMethod.Post, uploadUrl)
我在 ASP.NET Core 中有一个 Web API,该方法具有以下签名: [HttpPost] public HttpResponseMessage Foo(HttpRequestMessage
我有两个 API Controller ,位于两个不同的文件夹中,它们具有 GetEvents() 操作: V1 EventsController V2 EventsController 我希
我刚刚读到关于 web API model validation 的内容它有这个示例,但是下面提供的示例代码将无法编译,因为 CreateErrorResponse() 不存在于 HttpReques
将 http web api 请求转发到另一台服务器的最佳方法是什么? 这是我正在尝试的: 我有一个 .NET 项目,当我收到某些 API 请求时,我想修改请求,将其转发到另一台服务器,然后返回第二台
我正在处理一个 API,该 API 需要我设置 header application/json;masked=false 才能隐藏一些信息。使用 设置标题时 var request = new Htt
这里我有一个 HttpRequestMessage,我正在尝试向它添加一个客户端证书,但似乎找不到如何执行此操作。有没有人做过这样的事情? HttpRequestMessage request = n
有人有序列化 HttpRequestMessage 对象的经验吗?尝试使用 Json.net,它部分有效。也就是说,JsonConvert.DeserializeObject 由于构造问题而失败 St
我想多次发送完全相同的请求,例如: HttpClient client = new HttpClient(); HttpRequestMessage req = new HttpRequestMess
HttpRequestMessage.Properties的目的是什么? ? 我想知道它是否为我的应用程序提供了一些有用的东西。 最佳答案 在 Web Api 中它包含一些特殊的标志:http://w
我有一个具有以下操作的 MVC API Controller 。 我不明白如何阅读消息的实际数据/正文? [HttpPost] public void Confirmation(HttpRequest
如何将 IP 地址添加到 HttpRequestMessage? 我正在为 Web.API 应用程序编写单元测试,我有一个 AuthorizeAttribute 来检查调用者的 IP 地址 -
我实现了 POST Rest 服务来将文件上传到我的服务器。我现在遇到的问题是我想按类型限制上传的文件。举例来说,我只想允许上传 .pdf 文件。 我试图做的是 Task ta
我是一名优秀的程序员,十分优秀!