Почему для моей страницы вызываются два метода ActionResult? - PullRequest
0 голосов
/ 21 октября 2009

У меня есть приложение asp.net-mvc со следующими aspx-страницами, обслуживаемыми моим контроллером 'Users': Index.aspx, User.aspx, UsersIntoActivity.aspx и UsersUsingLocation.aspx.

В моем Global.ashx.cs у меня настроены следующие маршруты:

routes.MapRoute(
            "UsersHome",
            "Users",
            new { controller = "Users", action = "Index" });

routes.MapRoute(
            "Users",
            "Users/{id}/{name}",
            new { controller = "Users", action = "User", id = "", name = "" });

routes.MapRoute(
            "UsersUsing",
            "Users/Using/{locationId}/{name}",
            new { controller = "Users", action = "UsersUsingLocation", locationId = "", name = "" });

routes.MapRoute(
            "UsersInto",
            "Users/Into/{activityId}/{name}",
            new { controller = "Users", action = "UsersIntoActivity", activityId = "", name = "" });

Проблема заключается в том, что когда я пытаюсь получить доступ к UsersIntoActivity.aspx или UsersUsingLocation.aspx через URL-адрес сайта «Пользователи / Into / 1 / Some-Activity» или веб-сайт / Пользователи / Использование / 1 / Some-location соответствующий ActionResult метод вызывается, но метод User также вызывается впоследствии.

Ответы [ 3 ]

2 голосов
/ 22 октября 2009

Следуя ответу gWiz, как правило, после применения расширения сопоставления в IIS (для IIS 5 и 6) я затем щелкаю правой кнопкой мыши свойства изображения и / или скрипта FOLDERS, а затем удаляю добавленное вами расширение aspnet_isapi , Маршруты MVC теперь не будут вызываться для запросов файлов в этих папках.

В качестве альтернативы, установите расширение игнорирования маршрута в вашем глобальном asax.

this.Routes.IgnoreRoute("Content/{*pathInfo}");
//e.g if your images, css, scripts are in a content folder
2 голосов
/ 21 октября 2009

Я бы предположил, что второй запрос на этот маршрут поступает из браузера по какой-то причине. Попробуйте перехватить трафик между браузером и веб-сервером, используя Fiddler2 . Это может помочь вам исключить возможность возникновения перенаправления 301/302 или наличия ссылок на другие ресурсы в отображаемом HTML (например, в изображении, сценарии или теге ссылки).

1 голос
/ 22 октября 2009

Рассмотрите возможность использования отладчика маршрутов для проверки ваших маршрутов:

http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx

Это должно дать вам ответ, что на самом деле называется.

...