¿Se pueden usar los períodos en Asp.Net Web Api Routes?
Estoy trabajando para mover un proyecto de API de manejadores http sin procesar donde estoy usando puntos en las rutas:
http://server/collection/id.format
Me gustaría seguir el mismo esquema de URL en una versión de Web Api (auto hospedado) y probé esto:
var c = new HttpSelfHostConfiguration(b);
c.Routes.MapHttpRoute(
name: "DefaultApiRoute",
routeTemplate: "{controller}/{id}.{format}",
defaults: new { id = RouteParameter.Optional, format = RouteParameter.Optional },
constraints: null
);
Desafortunadamente, eso no parece resolverse (los 404 consistentes en / foo, / foo / bar y /foo/bar.txt). Un patrón similar con una barra inclinada antes de 'formato' funciona bien:
var c = new HttpSelfHostConfiguration(b);
c.Routes.MapHttpRoute(
name: "DefaultApiRoute",
routeTemplate: "{controller}/{id}/{format}",
defaults: new { id = RouteParameter.Optional, format = RouteParameter.Optional },
constraints: null
);
Todavía no he profundizado en el código de la Web Api, y antes de eso pensé en preguntar aquí para ver si se trata de una limitación conocida, o incluso justificada en la Web Api.
ACTUALIZACIÓN: olvidé mencionar que "id" y "formato" son cadenas, lo que resulta importante para la solución de esta pregunta. Agregar una restricción para excluir períodos del token "id" resuelve el problema 404.