ASP.NET MVC 2 работает один маршрут, другой - нет - PullRequest
0 голосов
/ 09 февраля 2010

В моем приложении ASP.NET MVC есть два маршрута.

Первый работает нормально - это ActionResult, который возвращает представление.

Второй находится на том же контроллере и является ActionResult, который возвращает ответ Json. Требуется пара дополнительных параметров.

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

Я также скопировал маршрут в браузер, чтобы устранить любые проблемы в jQuery JavaScript.

Способ

    [HttpGet]
    public ActionResult CheckSku(string id, string brand)
    {
        CheckSkuModel model = new CheckSkuModel();

        model.Id = id;
        model.Brand = brand;

        return Json(model, JsonRequestBehavior.AllowGet);
    }

Маршруты

  routes.MapRoute(
            "Default",                                              // Route name
            "{controller}.mvc/{action}/{id}",                           // URL with parameters
            new { controller = "Orders", action = "Send", id = "" }  // Parameter defaults
        );

        routes.MapRoute(
            "CheckSku",                                              // Route name
            "{controller}.mvc/{action}/{id}/{brand}",                           // URL with parameters
            new { controller = "Orders", action = "CheckSku", id = "", brand = "" }  // Parameter defaults
        );

Ответы [ 2 ]

1 голос
/ 09 февраля 2010

Две вещи, которые вы можете быстро проверить, могут помочь: 1. Поменяйте местами два маршрута, чтобы «CheckSku» было выше «default» 2. Сделайте «CheckSku» более конкретным, чтобы оно выглядело примерно так:

routes.MapRoute(
        "CheckSku",                                              // Route name
        "Orders.mvc/CheckSku/{id}/{brand}",                           // URL with parameters
        new { controller = "Orders", action = "CheckSku", id = "", brand = "" }  // Parameter defaults
    );

это был другой контроллер, который не получил URL по ошибке.

Альтернативой является использование помощника routelink при генерации URL, чтобы он указывал на правильный маршрут.

0 голосов
/ 09 февраля 2010

Когда вы говорите, что «получаете пустой ответ», вы имеете в виду, что вы не получаете сообщение об ошибке, но сервер ничего не возвращает? Что заставляет вас думать, что это проблема маршрутизации?

Некоторые советы по устранению неполадок:

  1. Используйте Fiddler для проверки HTTP-запроса, который вы делаете, и необработанного HTTP-ответа, который сервер отправляет обратно. Если вы получаете код ответа 500, проверьте ответ на информацию об ошибке.

  2. Можно ли подключить удаленный отладчик к серверу? Это может дать вам возможность исследовать любые возникающие исключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...