2013-05-20 3 views
4

У меня есть следующий метод контроллера:Открытый метод действия не был найден на контроллере

public ActionResult GetResults(string viewToReturn, int resultsPerPage, 
      string classification = null, string sessionId = null, int? lastId= null) 
{ 
       ... 
} 

Вызов методы выше по следующему адресу:

http://localhost:63455/Home/GetResults?viewToReturn=grid&resultsPerPage=30 

приводит исключение брошенного с этим сообщением:

способ общественные действия «» GetResults не был найден на контроллере «MyWebSite.Controllers.HomeCont ролик.

и здесь является RegisterRoutes:

......  
routes.MapRoute("Home", "home/{action}/{*qualifier}", 
     new { controller = "Home", action = "Index", qualifier = UrlParameter.Optional }); 
...... 
routes.MapRoute("SearchTitle", "{*path}", 
     new { controller = "Home", action = "SearchTitle", path = UrlParameter.Optional }); 

Почему я получаю эту ошибку и как я могу это исправить? Благодаря!

+1

Вам не нужно менять правила маршрутизации. Я тестировал одну и ту же сигнатуру действия, и она отлично работает с маршрутом по умолчанию. –

+0

Мне нужны правила из-за других вещей. В конце есть правило для URL-адресов, которые не сопоставляются с контроллерами. Это правило захватывает и передает все остальное конкретному контроллеру. Я уточнил вопрос более подробно. – Barka

+0

, более подробная информация поможет. Однако один вопрос: в каком контроллере реализовано это действие? –

ответ

6

У меня был атрибут [HttpPost] метода. Я мог бы поклясться, что убрал его раньше, но как-то после того, как я сделал перерыв и вернулся, я это увидел. После его удаления все работает отлично.

+0

Да, как запутанно, эта «гоча» наверняка рано или поздно поймает новых разработчиков. Возможно, лучшая практика должна быть AcceptVerbs только тогда, пока Microsoft не устранит это необязательное ограничение, например. http://stackoverflow.com/questions/3843875/what-is-the-difference-between-acceptverbshttpverbs-post-and-httppost –