WebAPI route 404's when there is a trailing space in the URL
asp.net, asp.net-mvc-routing, asp.net-web-api, c#, routes
Solution
Your issue has nothing to do with WebAPI itself but how Asp.Net handles some specific urls. And Asp.Net handles these urls in a very paranoid way, so you need to tell it to relax.
Add this line to your web.config under `system.web`:
<httpRuntime relaxedUrlToFileSystemMapping="true" />
You can read more about this topic:
- Putting the Con (COM1, LPT1, NUL, etc.) Back in your URLs
Also on SO:
- "The resource cannot be found." error when there is a "dot" at the end of the url
- Problem with a URL that ends with %20 (it describes a different context so I don't think that this is a real duplicate)
Problem
With the default web api route ``` config.Routes.MapHttpRoute( name: "API Default", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional } ); ``` and a controller ``` public class TestController : ApiController { [HttpGet] public HttpResponseMessage Get(string id) { return Request.CreateResponse(HttpStatusCode.OK, id); } } ``` A request to `'api/test/1'` returns `1` If for some reason you send a request to `'api/test/1%20'` the route 404's. Now this example may seem silly since browsers trim trailing spaces, but for a route like `'api/{controller}/{id}/{extrastuff}'` the space in `'1 '` would convert to `'1%20'` and the request will 404 on the route not being found.