Проблема с развертыванием проекта ASP.NET MVC на хостинг-провайдере. 404 ошибки - PullRequest
1 голос
/ 10 февраля 2010

Я опубликовал свой проект VS2008 ASP.NET MVC 1.0 в локальной папке, а затем отправил его по FTP в виртуальный каталог на моем хосте. Я попытался запустить, и он пожаловался на отсутствие System.Web.Mvc.dll, поэтому я скопировал это.

После этого я получаю 404. Теперь я знаю, что он попадает в мой метод HomeController.Index, потому что он выполняет RedirectToAction. Это следующее действие (которое находится в том же контроллере) является причиной проблемы.

У меня такое ощущение, что маршрутизация работает неправильно.

Я смотрел приложение с Fiddler:

  1. Я иду http://www.example.com/myApp
  2. Результат 301 (перманентное перенаправление) на http://www.example.com/myApp
  3. Тогда я получаю 302 (перенаправить на / myApp / Home / Details / 2). Это правильно, потому что мой метод Index на HomeController выполняет RedirectAction для метода Details с параметром 2.
  4. Затем браузер нажимает http://www.example.com/myApp/Home/Details/2.. В этот момент я получаю 404. Не найдено.

Похоже, что / Home / Details / 2 не отображается на моем контроллере, несмотря на следующий код global.asax:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

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

}

protected void Application_Start()
{
    RegisterRoutes(RouteTable.Routes);
}

Так чего мне не хватает?

Ответы [ 3 ]

2 голосов
/ 22 февраля 2010

Ну, ответ все время смотрел мне в лицо:

alt text

Ссылка объясняет, что делать, если ваш хост - это IIS6 (который является goDaddy) или классический режим IIS7.

2 голосов
/ 10 февраля 2010

Вам нужен только развернутый dll MVC. Маршрутизация идет с SP1. Я бы предложил:

  • Создание контроллера тестирования / состояния, возвращающего основную информацию
  • Используйте Firebug или Fiddler, как инструмент, чтобы увидеть, что происходит по HTTP
  • Попробуйте найти любые проблемы с вашими конфигурациями:
    • Убедитесь, что в вашем web.config
    • Убедитесь, что ваши расширения правильны, особенно в IIS 6 (например, если вы используете .mvc, оно должно быть в ваших маршрутах, а также в конфигурации IIS и web.config)
    • Конфигурация IIS 6 может быть хитрой
    • AFAIK (извините, не знаю, хватит об этом, но) Конфигурация IIS 7 должна быть в вашем web.config.

Я сталкивался с подобными ситуациями, когда вырывал свои волосы, к сожалению, мой опыт (в основном на IIS 6, хотя) заставлял меня дважды проверять и проверять все эти точки снова и снова, а также проб и ошибок в конфигурациях, чтобы получить их за работой.

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

Убедитесь, что на сервере установлен ASP.NET MVC 1.0 RTM - поскольку на нем есть все dll (маршрутизация, mvc и т. Д.), Необходимые для работы вашего сайта MVC.

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