ASP.NET MVC Routing не работает в виртуальном каталоге - PullRequest
3 голосов
/ 21 июля 2010

У меня есть приложение asp.net mvc 2 (использующее .net 4.0), которое неправильно маршрутизируется при размещении в виртуальном каталоге. У меня есть следующее простое правило маршрутизации:

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

Я пытаюсь разрешить http://mydomain.com/accounts/new. Где "account" - это виртуальный каталог. Если я помещаю приложение в корень веб-сайта IIS, оно отлично подходит для http://mydomain.com/new,, но если я помещаю приложение в виртуальный каталог, я получаю 404 ошибки. Я отладил, и он выполняет global.asax и настраивает маршрутизацию, когда в VDIR. Есть ли что-то особенное, что мне нужно сделать для маршрутизации в виртуальном каталоге?

FYI. Я использую vdir, потому что в корне есть wordpress.

Спасибо!

еще одна вещь: если я укажу действие по умолчанию в параметрах по умолчанию, оно выполнит действие / контроллер по умолчанию, но больше ничего не будет соответствовать.

Ответы [ 2 ]

1 голос
/ 22 июля 2010

Я понял это. Wordpress (который я установил в корне сайта) настроил некоторые правила перезаписи URL, которые мешали asp.net mvc получать любые запросы, кроме корня виртуального каталога. Все, что выходит за пределы этого пути, переписывалось в index.php, чего, конечно же, не было в моем приложении mvc.

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

0 голосов
/ 21 июля 2010

работает, если вы измените его на:

routes.MapRoute( 
    "Default", // Route name 
    "accounts/{action}", // URL with parameters (BUT WITH ACCOUNTS PREFIX)
    new { controller = "accounts" } // Parameter defaults 
); 
...