Можно ли использовать точки в маршрутах 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.