AspNet核心网址解码

时间:2018-09-04 07:29:13

标签: asp.net-core urldecode

我正在使用AspNetCore 2.1。 我遇到了反序列化一部分URL的问题: http://localhost:55381/api/Umbrellas/cc1892b0-b790-4698-ae3e-07bee39fd29b/ModeOperationnelWithAppliedEvents?dateDeValeur=2018-09-01T02:00:00.000+02:00

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

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

如果将其包含在URL中,则不起作用。 相反,如果在邮件正文中包含相同的格式,则会对其进行正确的反序列化。

{“ lastKnownAggregateVersion”:4,“ validFrom”:“ 2017-09-03T00:00:00.000 + 02:00 ”,“ commandId”:“ 0cfa7da0-7895-4917-89ac- 24ffa3abb87c“,” newDateDeValeur“:” 2017-09-03T00:00:00.000 + 02:00 “,” eventUniqueIdentifier“:{” streamName“:” umbrella-54576b92-0234-4ec1-8eee- 142375c53325“,” eventVersion“:0},” aggregateId“:” 54576b92-0234-4ec1-8eee-142375c53325“}

根据RFC3986,冒号':'和'+'都是URL中的合法字符。有人对此有想法吗?

1 个答案:

答案 0 :(得分:1)

确定URL和URI具有不同的标准

URL标准在这里RFC1738: Uniform Resource Locators (URL)。因此,根据文档,“:”保留为scheme。

  

许多URL方案保留某些具有特殊含义的字符:
  它们出现在网址的方案特定部分中的
  指定的语义。如果一个八位位组对应的字符是
  如果保留在方案中,则必须对八位字节进行编码。那些角色 ”;”,   “ /”,“?”,“:”,“ @”,“ =“和“&”是可能是
的字符   为方案中的特殊含义保留。不得有其他字符   保留在方案中。

以及转到+:

  

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