ASP.Net MVC 3: Маршрутизация URL приводит к 404, когда я перехожу с локального на dev сервер - PullRequest
0 голосов
/ 08 марта 2012

У меня есть простой домашний и игровой контроллер, настроенный так:

public class HomeController : BaseController
{
    public ActionResult Index()
    {
        return View();
    }
}



public class GameController : BaseController
{
    [HttpPost]
    public ActionResult New(int level = 1)
    {
        ...
    }

    public ActionResult FlipCard(int row, int column,Guid nonce)
    {
        ...
    }

    [OutputCache(Duration=Constants.CACHE_IMAGE_EXPIRATION_SECONDS)]
    public FileResult Image (Guid imageId)
    {
        ...
    }

    public ActionResult Finish()
    {
        ...
    }

}

У меня настроена маршрутизация как таковая в Global.asax.cs:

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 = UrlParameter.Optional } // Parameter defaults
        );

    }

    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        RegisterGlobalFilters(GlobalFilters.Filters);
        RegisterRoutes(RouteTable.Routes);
    }
}

Когда язапустить сайт с помощью IIS Express;Я могу получить доступ к http://localhost/ очень хорошо и увидеть HTML в моем домашнем / индексном представлении;а также использовать действия на игровом контроллере.

Когда я запускаю сайт из виртуального каталога в IIS локально;Я могу видеть то же представление в http://localhost/site/; и могу также использовать действия игрового контроллера.

Однако, когда я развертываюсь на нашем сервере разработки в виртуальном каталоге, настроенном как приложение .Net 4и загрузите http://dev/site/; Я не вижу домашний / индексный вид.Вместо этого я просто получаю список каталогов всех файлов в корневом подкаталоге сайта.Действия игрового контроллера также недоступны.В результате обращения к любому из URL-адресов сайта появляется 404.

Google решил эту проблему;нашел несколько решений и перепробовал их все;похоже, ни один из них не работает.

Некоторые примечания

  • У меня есть сборки MVC3, развернутые в локальной папке bin

  • Пул приложений для сайта на всех серверах .Net 4.0.

  • Я создал тестовую веб-форму, которая отображает корневой каталог приложения (Server.MapPath ("~")), чтобы подтвердить, что виртуальныйкаталог был настроен как веб-приложение.Я развернул его на http://*/site/test.aspx, результаты были, как и ожидалось:
    • Local: c: \ inetpub \ wwwroot \ site
    • Dev: e: \ inetpub \ wwwroot \ site

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

Спасибо, Фрэнк

1 Ответ

0 голосов
/ 08 марта 2012

Установлен ли IIS для передачи всех запросов обработчикам .net через сопоставление с подстановочными знаками? Если нет, то .net никогда не увидит запрос для обработки маршрута.

http://learn.iis.net/page.aspx/508/wildcard-script-mapping-and-iis-integrated-pipeline/

...