我正在使用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中的合法字符。有人对此有想法吗?
答案 0 :(得分:1)
确定URL和URI具有不同的标准
URL标准在这里RFC1738: Uniform Resource Locators (URL)。因此,根据文档,“:”保留为scheme。
许多URL方案保留某些具有特殊含义的字符:
它们出现在网址的方案特定部分中的
指定的语义。如果一个八位位组对应的字符是
如果保留在方案中,则必须对八位字节进行编码。那些角色 ”;”, “ /”,“?”,“:”,“ @”,“ =“和“&”是可能是
的字符 为方案中的特殊含义保留。不得有其他字符 保留在方案中。
以及转到+:
因此,只有字母数字,特殊字符“ $ -_。+!*'(),”和
可以使用用于保留目的的保留字符
在URL中未编码。