Я работаю над перемещением проекта 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
);
Я еще не вникал в код веб-API, и прежде чем я подумал, я бы спросил здесь, является ли это известным или, возможно, даже оправданным ограничением в веб-API.
ОБНОВЛЕНИЕ :Я забыл упомянуть, что "id" и "format" являются строками, что оказалось важным для решения этого вопроса. Добавление ограничения для исключения периодов из токена «id» решает проблему 404.