Можно ли использовать точки в маршрутах Asp.Net Web Api?

Я работаю над перемещением проекта API из необработанных обработчиков http, где я использую точки в путях:

http://server/collection/id.format

Я хотел бы следовать той же схеме URL в версии Web Api (самостоятельно размещенной) и попробовал это:

var c = new HttpSelfHostConfiguration(b);
c.Routes.MapHttpRoute(
    name: "DefaultApiRoute",
    routeTemplate: "{controller}/{id}.{format}",
    defaults: new { id = RouteParameter.Optional, format = RouteParameter.Optional },
    constraints: null
);

К сожалению, это, похоже, не разрешается (в соответствии с 404 на / foo, / foo / bar и /foo/bar.txt). Аналогичный шаблон, использующий косую черту перед «форматированием»; работает отлично:

var c = new HttpSelfHostConfiguration(b);
c.Routes.MapHttpRoute(
    name: "DefaultApiRoute",
    routeTemplate: "{controller}/{id}/{format}",
    defaults: new { id = RouteParameter.Optional, format = RouteParameter.Optional },
    constraints: null
);

Я еще не углубился в код для Web Api, и прежде чем я подумал, я хотел бы спросить здесь, чтобы узнать, является ли это известным или, возможно, даже оправданным ограничением в Web Api.

ОБНОВЛЕНИЕ: я забыл упомянуть, что & quot; id & quot; и & quot; формат & quot; являются строками, что оказывается важным для решения этого вопроса. Добавление ограничения для исключения периодов из & quot; id & quot; токен решает проблему 404.

Ответы на вопрос(5)

Ваш ответ на вопрос