0

I am using AspNetCore 2.1. I encountered an issue to deserialize a portion of URL: http://localhost:55381/api/Umbrellas/cc1892b0-b790-4698-ae3e-07bee39fd29b/ModeOperationnelWithAppliedEvents?dateDeValeur=2018-09-01T02:00:00.000+02:00

the part "2018-09-01T02:00:00.000+02:00" is expected to be deserialized as DateTimeOffset. But it failed to do it. A default(DateTimeOffset) is returned.

If I encode to this format "2018-09-01T02%3A00%3A00.000%2B02%3A00" => correctly deserialized.

When it is enclosed in URL, that does not work. In the contrarily, when the same format is enclosed in the body of message, it is correctly deserialized.

{"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"}

According to RFC3986 both colon ':' and '+' is legal char in a URL. Does anyone have an idea on this?

1 Answer 1

1

Ok it turns out URL and URI have different standard

the URL standard is here RFC1738: Uniform Resource Locators (URL). So according to the doc, ':' is reserved for scheme.

Many URL schemes reserve certain characters for a special meaning:
their appearance in the scheme-specific part of the URL has a
designated semantics. If the character corresponding to an octet is
reserved in a scheme, the octet must be encoded. The characters ";", "/", "?", ":", "@", "=" and "&" are the characters which may be
reserved for special meaning within a scheme. No other characters may be reserved within a scheme.

and when it goes to +:

Thus, only alphanumerics, the special characters "$-_.+!*'(),", and
reserved characters used for their reserved purposes may be used
unencoded within a URL.

Sign up to request clarification or add additional context in comments.

2 Comments

retested the stuff, it turns out both : and + can be decoded from URL. But it seems that AspNet does not how to decode this format 2017-09-03T00:00:00.000+02:00 enclosed in a URL
+ is considered as space in a URL

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.