Мое приложение MVC 2 обслуживает 404 для всех страниц, кроме домашней страницы - PullRequest
0 голосов
/ 23 августа 2011

У меня есть приложение mvc 2, работающее в ii6 в тестовой среде и на производственном сервере.

Среда тестирования работает просто отлично, но после перехода на рабочую страницу на всех страницах, кроме сервера домашней страницы, появляется 404 ошибки.

Я выполнил шаг 2, здесь: http://blog.codeville.net/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/, добавил расширение .aspx к маршруту и ​​попробовал сопоставление с подстановочными знаками. Кажется, это не имеет никакого значения.

Я поместил файл диагностики, найденный здесь: http://bradwilson.typepad.com/blog/2010/03/diagnosing-aspnet-mvc-problems.html, в каталог и загрузил его, но он не сообщает об ошибках или проблемах.

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

Прямо сейчас страницы маршрутизируются как: Home.aspx/About и моя таблица маршрутизации выглядит так:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });

    routes.MapRoute(
        "Default", // Route name
        "{controller}.aspx/{action}/{id}", // URL with parameters
        new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
    );
    routes.MapRoute(
        "NewEmployee",
        "{controller}.aspx/{action}",
        new { controller = "NewEmployee", action = "Index" }
    );
    routes.MapRoute(
        "Admin",
        "{controller}.aspx/{action}",
        new { controller = "Admin", action = "Index" });
    routes.MapRoute(
        "AccessMaster",
        "{controller}.aspx/{action}/{id}/{subid}",
        new { controller = "AccessMaster", action = "Index", id=UrlParameter.Optional,subid=UrlParameter.Optional });

    routes.MapRoute(
      "Root",
      "",
      new { controller = "Home", action = "Index", id = "" }
    );

}

Я в недоумении. Я делаю что-то неправильно? Что-то не так с сервером?

Ответы [ 2 ]

1 голос
/ 23 августа 2011

Попробуйте зарегистрировать ASP.NET в IIS с помощью следующей команды:

aspnet_regiis /i

Также убедитесь, что вы включили правильную версию ASP.NET в IIS (папка расширений веб-службы):

enter image description here

У вас также есть много ненужных маршрутов.Например, маршруты NewEmployee и Admin полностью эквивалентны, что означает, что будет совпадать только первый маршрут в этом списке.Но это еще одна проблема, она не связана с ошибками развертывания, которые вы получаете.После успешного запуска приложения вы можете исправить маршруты.

0 голосов
/ 23 августа 2011

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

...