Что не так с этим маршрутом MVC?

Я хочу создать собственный обработчик URL-адреса изображения, который может обрабатывать запросы GET со следующим шаблоном URL-адреса:

http://blah.com/images/image1.gif

Чтобы справиться с этим, я создал следующий маршрут:

        routes.MapRoute(
            name: "appImages",
            url: "images/{*imageName}",
            defaults: new { controller = "Image", action = "Grab" });

Похоже, это не работает даже для изображений без пробелов в именах. Что я делаю неправильно?


person jujiro    schedule 25.10.2015    source источник
comment
Убедитесь, что у вас нет папки с названием images, так как IIS (я полагаю) сначала будет искать логические (они существуют) папки/файлы, а затем передает их конвейеру .NET для дальнейшей обработки, если ничего не найдено. Если у вас есть папка с изображениями, запрос никогда не попадет в механизм маршрутизации.   -  person Tommy    schedule 26.10.2015
comment
Вот оно. У меня была папка с физическими изображениями, соответствующая uri. Спасибо, Томми.   -  person jujiro    schedule 26.10.2015
comment
Круто - рад, что у вас получилось! Я разместил это как ответ, если кто-то еще наткнется на этот вопрос.   -  person Tommy    schedule 26.10.2015


Ответы (1)


По умолчанию IIS ищет существующие файлы и папки при обработке запроса от пользователя. Если у вас есть существующая папка или файл, IIS просто попытается извлечь файл с диска, а не передать запрос конвейеру/движку маршрутизации .NET.

Убедитесь, что в вашем решении уже есть папка с именем images. Если у вас есть эта папка, я предлагаю (самый простой способ) либо изменить имя вашего контроллера, либо существующее имя папки, чтобы решить ваши проблемы.

person Tommy    schedule 26.10.2015