Consider a request with path '/%23a' (an escaped version of '/#a') and a route with template '/{x}' and x=RouteParameter.Optional. Suppose we the route maps to a controller with methods:
public IEnumerable<X> Get(){}
public X Get(string x){}
When run under ASP.NET host, the request is routed with x=#a which is correct, and the api then picks the Get(string) method, which is also correct.
Under Self Host, however, the request is routed with x = null, and the API picks the Get() method. Which is completely wrong.
I can't find the place where the framework starts using the wrong url, but apparently routing behavior differs.
public IEnumerable<X> Get(){}
public X Get(string x){}
When run under ASP.NET host, the request is routed with x=#a which is correct, and the api then picks the Get(string) method, which is also correct.
Under Self Host, however, the request is routed with x = null, and the API picks the Get() method. Which is completely wrong.
I can't find the place where the framework starts using the wrong url, but apparently routing behavior differs.