Я использую ASP.NET MVC 4 Beta с Web API - хотя я считаю, что реализация маршрутизации не имеет существенных отличий от .NET 4.0, относящихся к этому вопросу. MapHttpRoute
, используемый в приведенном ниже коде, поставляется с MVC 4 и является методом расширения, который по существу выполняет ту же функцию, что и MapRoute, но для контроллеров WebApi.
У меня есть устаревший метод веб-обслуживания, для которого я хочу создать маршрут ASP.NET. В настоящее время метод имеет следующую подпись:
NewsItemList ListNewsItems(string category, int maxResults)
Он должен отображаться запросами, чьи URI выглядят так:
~/news?category=finance&maxResults=50
Ни один, ни оба параметра строки запроса могут присутствовать.
Я изо всех сил пытаюсь найти способ определить маршрут для поддержки этого метода.
Я использовал MapHttpRoute
для регистрации маршрута и установки значений по умолчанию для контроллера и значений действия для контроллера и метода соответствующим образом. Вот несколько шаблонов, которые я пробовал с результатом:
"news"
захватывает "~/news"
и правильно связывается с методом, но
ничего не захватит с помощью строки запроса.
"news{*query}
нет
разрешено, потому что вы не можете иметь всеохватывающий
сегмент Ури
"news{query}"
захватывает строку запроса, но не
привязать к методу
Я ищу способ продвижения вперед, который не слишком радикальный, так как это крайний случай в приложении. Решение должно соответствовать многим другим существующим маршрутам. В идеале я бы тоже хотел не идти по пути переписывания Uri.