2012-03-08 6 views
1

Я использую бета-версию ASP.NET MVC 4 с веб-API, хотя я считаю, что реализация маршрутизации не имеет существенных отличий от .NET 4.0, относящихся к этому вопросу. MapHttpRoute, используемый в коде ниже, поставляется с MVC 4 и является методом расширения, который по существу выполняет ту же функцию, что и MapRoute, но для контроллеров WebApi.Маршрут ASP.NET с фиксированным параметром URI, не сопоставляющим параметры querystring

У меня есть старый метод serivce, для которого я хочу создать маршрут ASP.NET. Метод в настоящее время имеет следующие подписи:

NewsItemList ListNewsItems(string category, int maxResults) 

Он должен быть сопоставлен по запросам, чьи идентификаторы URI выглядеть следующим образом:

~/news?category=finance&maxResults=50 

Ни, один или оба запроса строковые параметры могут присутствовать.

Я изо всех сил пытаюсь найти способ определения маршрута для поддержки этого метода.

Я использовал MapHttpRoute, чтобы зарегистрировать маршрут и установить значения по умолчанию для контроллера и значения действия для контроллера и метода соответствующим образом. Вот некоторые шаблоны я попытался с результатами:

  • "news" захватывает "~/news" и связывается с методом правильно, но не будет ничего с строки запроса захвата.
  • "news{*query} не разрешено, потому что вы не можете иметь улов-все, если это не является исключительно этапа заседаний Uri
  • "news{query}" захватывает строку запроса, но не привязка к методу

I» m ищет путь вперед, который не слишком радикальный, поскольку это крайний случай в приложении. Решение должно соответствовать многим другим существующим маршрутам. В идеале я бы хотел избежать того, чтобы идти по пути переписывания Uri.

ответ

1

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

Смежные вопросы