Приложение MVC 5 не будет обрабатывать файл aspx, если RouteExistingFiles = true

Я имею routes.RouteExistingFiles = true; в RouteConfig.cs в приложении ASP.NET MVC 5. Он не будет обрабатывать файл aspx. Если я попытаюсь открыть URI, такой как "/api/latest/Default.aspx", я получу только какой-то XML с этими специфическими сообщениями: <Error> <Message>No HTTP resource was found that matches the request URI 'http://localhost:58341/api/latest/Default.aspx'.</Message> <MessageDetail>No type was found that matches the controller named 'latest'.</MessageDetail> </Error>

Приложение не имеет проблем с обслуживанием физических файлов. Если я помещаю html-файл в ту же директорию, он прекрасно работает. Я попытался добавить каждую из следующих трех строк в мой RegisterRoutes: routes.IgnoreRoute("api"); routes.IgnoreRoute("api/{*pathInfo}");

Никто из них не работал.

Кажется, он пытается перенаправить мой URL на маршрут, который выглядит как "api/{controller}", что странно, потому что у меня нет маршрутов, которые бы помещали контроллер в качестве второго аргумента! Я также попытался закомментировать все мои маршруты - он по-прежнему выдает то же сообщение об ошибке и не обрабатывает файл aspx.

Мне нужно иметь RouteExistingFiles = true, потому что я использую это, чтобы обеспечить контроль авторизации для загрузки определенных файлов.

Кажется, что я мог бы что-то добавить к <system.webServer><handlers> чтобы исправить это, но я не знаю что.

Могу ли я заставить это работать?

RouteConfig.cs:

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

            routes.RouteExistingFiles = true;
        }
    }

0 ответов

Другие вопросы по тегам