@bet.. I think the genericUriParserOptions is no longer applicable to .net 4.5 or later..
Also as suggested by @JotaBe, you might need to correctly decode the url request. In most case the %2F will be automatically translated to a slash "https://stackoverflow.com/". So if you need to escape it you will need to decode the '%' char in the first place.. so your URL: will look something like: www.domain.com/api/orders/23%252F06%252F2015/customers
Notice the characters '%252F' will be translated to the actual '%2F'
EDIT
Ok here is the complete solution (Tried it and working for me):
-
Assuming you have an API endpoint like so:
[Route("orders/{date}/customers")] public HttpResponseMessage Get(string date) { } -
In the web.config you will need to set the
requestPathInvalidCharactersto empty which tells the asp.net to allow all request<system.web> <httpRuntime targetFramework="4.5" requestPathInvalidCharacters=""/> </system.web> <system.webServer> <security> <requestFiltering allowDoubleEscaping="true" /> </security> </system.webServer> -
When the client sending the request to the API you will need to make sure to escape the
'%'like so:www.domain.com/api/orders/23%252F06%252F2015/customers
-
You then need to decode the request
[Route("orders/{date}/customers")] public HttpResponseMessage Get(string date) { DateTime actualDate = DateTime.Parse(System.Net.WebUtility.UrlDecode(date)); // date is 23/06/2015 }