¿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.

Respuestas a la pregunta(5)

Su respuesta a la pregunta