Маршрут ASP.NET с фиксированным URI не отображает параметры строки запроса - PullRequest
1 голос
/ 08 марта 2012

Я использую 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.

1 Ответ

1 голос
/ 08 марта 2012

Это было связано с проблемой в моем тестировании.Я ошибочно предположил, что HttpRequestBase.AppRelativeCurrentExecutionFilePath включает в себя часть строки запроса URI запроса.Это не.Когда я исправил свой макет, все начало работать.

...