Asp.net core AspNet核心Url解码

Asp.net core AspNet核心Url解码,asp.net-core,urldecode,Asp.net Core,Urldecode,我使用的是AspNetCore 2.1。 我在反序列化URL的一部分时遇到问题: 部分“2018-09-01T02:00:00.000+02:00”预计将反序列化为DateTimeOffset。但它没有做到这一点。返回默认值(DateTimeOffset) 如果我将此格式编码为“2018-09-01T02%3A00%3A00.000%2B02%3A00”=>正确反序列化 当它包含在URL中时,这就不起作用了。 相反,当相同的格式包含在消息体中时,它会被正确地反序列化 {“LastKnownag

我使用的是AspNetCore 2.1。 我在反序列化URL的一部分时遇到问题:

部分“2018-09-01T02:00:00.000+02:00”预计将反序列化为DateTimeOffset。但它没有做到这一点。返回默认值(DateTimeOffset)

如果我将此格式编码为“2018-09-01T02%3A00%3A00.000%2B02%3A00”=>正确反序列化

当它包含在URL中时,这就不起作用了。 相反,当相同的格式包含在消息体中时,它会被正确地反序列化

{“LastKnownaggerGateVersion”:4,“validFrom:“2017-09-03T00:00:00.000+02:00”,“commandId:“0cfa7da0-7895-4917-89ac-24ffa3abb87c”,“NewDateDevaluer:“2017-09-03T00:00:00.000+02:00”,“eventUniqueIdentifier:{“streamName:“Unrella-54576b92-0234-4ec1-8eee-1423753325”,“eventVersion:”0},“聚合ID:”“54576b92-0234-4ec1-8eee-142375c53325”


根据冒号“:”和“+”在URL中都是合法字符。有人对此有想法吗?

好的,URL和URI有不同的标准

URL标准在这里。所以根据文档,“:”是为scheme保留的

许多URL方案保留特定字符以表示特殊含义:
它们在URL的特定于方案的部分中的外观有一个
指定语义。如果八位字节对应的字符是
在方案中保留,必须对八位字节进行编码;", “/”、“?”、“:”、“@”、“=”和“&”是可能是
保留用于方案中的特殊含义。不得使用其他字符 在方案中保留

当它转到+:

因此,只有字母数字,即特殊字符“$-。+!*”(),“,和
可使用用于保留目的的保留字符
在URL中未编码


重新测试了这些内容,结果表明:和+都可以从URL中解码。但似乎AspNet不知道如何解码这种格式2017-09-03T00:00:00.000+02:00包含在URL中+被视为URL中的空格