MVC3 404 для любого URL, содержащего PRN

Я столкнулся со странной проблемой, когда любой URL-адрес, содержащий «PRN», возвращает 404.

Если у меня есть 2 метода:

    public string Test(string x)
    {
        return "hello";
    }

    public string PRN(string x)
    {
        return "worked";
    }

Я могу вызвать тест, перейдя в: Контроллер / Тест

Он всегда возвращает «привет». Однако, если я попытаюсь позвонить: Controller / Test / PRN, я получу 404

Если я попытаюсь позвонить в Controller / PRN / Anything, я получу 404

Я обнаружил, что в нескольких приложениях MVC3 любой URL-адрес, содержащий «PRN», вернет ошибку 404. У кого-нибудь есть какие-либо идеи?

РЕДАКТИРОВАТЬ: это моя конфигурация маршрута:

    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 } 
        );

    }

Спасибо.


person RepDetec    schedule 06.07.2011    source источник
comment
Покажите нам конфигурацию ваших маршрутов   -  person archil    schedule 06.07.2011
comment
Возможно, стоит опубликовать свое содержимое RegisterRoutes, так как это наиболее вероятный кандидат на проблемы.   -  person Timbo    schedule 06.07.2011


Ответы (2)


Прочтите следующее: http://bitquabit.com/post/zombie-operating-systems-and-aspnet-mvc/

Что указывает на: Маршрутизация ASP.NET MVC против зарезервированных имен файлов в Windows

person mathieu    schedule 06.07.2011

Если вы вызываете Controller/Test/PRN' It wont point to anything because you are calling theTest` ActionMethod и передаете PRN в качестве параметра.

Попробуйте добавить ...

routes.MapRoute(
            "PRN", // Route name
            "Controller/PRN/{x}", // URL with parameters
            new { x = UrlParameter.Optional } // Parameter defaults
        );

... в начало вашего RegisterRoutes метода в папке Global.asax.cs.

person Stephen__T    schedule 06.07.2011
comment
Я понимаю это, но PRN должен нормально работать в качестве параметра. Если я вызываю Controller / Test / SomethingThatIsntPRN, он возвращает привет, как я и ожидал. - person RepDetec; 06.07.2011