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

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

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

18
задан Lee 16 July 2012 в 18:05
поделиться