Почему в ASP.NET MVC я получаю 404 ошибки после публикации моего сайта? - PullRequest
1 голос
/ 28 августа 2009

Я все еще новичок в ASP.NET MVC и немного борюсь с маршрутизацией.

Используя сервер разработки ASP.NET (работающий непосредственно из Visual Studio), мое приложение может без труда находить свои представления. Используется стандартный URL-адрес ASP.NET - http://localhost:1871/InterestingLink/Register

Однако, когда я публикую свой сайт в IIS и получаю к нему доступ через http://localhost/MyFancyApplication/InterestingLink/Register,, я получаю ошибку 404.

Есть предложения, что может быть не так?

Подробнее ...

Вот как выглядит мой файл global.asax (стандартный):

public class MvcApplication : System.Web.HttpApplication
    {
        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);
        }
    }

Мой контроллер также очень прост:

public class InterestingLinkController : Controller
{
    public ActionResult Register()
    {
        return View("Register");
    }
}

Ответы [ 2 ]

2 голосов
/ 28 августа 2009

Я понял, что случилось. Проблема заключалась в том, что IIS5 (в Windows XP) не запускает ASP.NET, когда URL-адрес не содержит .ASPX. Самый простой способ обойти это - добавить «.aspx» в раздел вашего контроллера в global.asax. Например:

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

Не красиво, но подойдет.

1 голос
/ 28 августа 2009

Многое может быть не так:

  • Правильно ли настроен виртуальный каталог и приложение IIS?
  • Приложение ASP.NET вызывается вообще? (Добавьте немного logging / breakpoiont в Application_Start и Application_BeginRequest)

Просто для начала. Вам придется применить обычные методы отладки.

(Чтобы избежать подобных проблем, я редко использую сервер разработки и все время использую IIS: самое сложное - не забывать каждый раз запускать VS с повышенным уровнем.)

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