Подтвердить что ты не робот

RedirectToAction Причиняет "Нет маршрута в таблице маршрута соответствует предоставленным значениям" в ASP.NET MVC 3

У меня есть проект, который я недавно обновил до ASP.NET MVC 3. На моей локальной машине все работает нормально. Когда я развертываю сервер, я получаю сообщение об ошибке при использовании вызова RedirectToAction. Он выдает сообщение System.InvalidOperationException с сообщением об ошибке. В таблице маршрутов маршрут не соответствует указанным значениям. Мое предположение заключается в том, что на сервере существует некоторая проблема с конфигурацией, но я не могу понять это.

4b9b3361

Ответ 1

У меня была аналогичная проблема с RedirectToAction и выяснилось, что вам нужен действительный маршрут, который ведет к этому действию.

Ответ 2

Я столкнулся с этим с областями внутри MVC3 при перенаправлении по областям. Как говорили другие, Glimpse здесь очень полезен.

Решение для меня состояло в том, чтобы передать в Районе значение параметра параметров маршрута:

return RedirectToAction("ActionName", "ControllerName");

в

return RedirectToAction("ActionName", "ControllerName", new { area = "AreaName" });

Ответ 3

Посмотрите, посмотрите и посмотрите, можете ли вы получить информацию об отладке маршрута: http://getglimpse.com/

Ответ 4

Там разница с трейлинг-косой чертой в маршрутах, не работающих с MVC 3.0. У MVC 2.0 нет проблем с ними. I.e., если вы измените следующее:

"{controller}.mvc/{action}/{id}/"

в

"{controller}.mvc/{action}/{id}"

он должен исправить это (от этот поток, работал у меня). Даже когда вы используете мастер обновления для перехода на MVC 3.0, это все равно бросает InvalidOperationException. Я не знаю, говорил ли это об этом Schmalls.

Ответ 5

Вы можете добавить таблицу маршрутов в файл RouteConfig.cs, как показано ниже:

public static void RegisterRoutes(RouteCollection routes)
    {
        routes.MapMvcAttributeRoutes();

        var namespaces = new[] { typeof(HomeController).Namespace };

        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute("name", "url", new { controller = "controllerName", action = "actionName" }, namespaces);
    }

NB: "url" - это то, что вы набрали в адресной строке: localhost:/home

После настройки маршрута используйте RedirectToRoute("url").

Или, если вы предпочитаете RedirectToAction(), вам не нужно настраивать вышеуказанный маршрут, используйте значения по умолчанию. RedirectToAction(string action name, string controller name);

Надеюсь, это поможет.