none
Как настроить маршрут в MVC 3 типа /Content/some/folder/file.jpg RRS feed

  • Вопрос

  • Как настроить маршрут в MVC 3 типа "app/Content/some/folder/file.jpg"? Путь не существующий и файл, указанный в пути лежит в другой папке (вне сайта). Пытался зарегистрировать обработчик, наследованный от IRouteHandler. Для запросов типа "app/Content/some/folder" он отрабатывает, а для файлов - нет.

    25 ноября 2012 г. 14:59

Ответы

  • Отвечу сам себе. Изменилось поведение MVC-движка, и поэтому, путь, содержащий название файла, по умолчанию не передается в обработку .. обработчикам)). Чтобы они передавались надо:

    1. Включить в web.config опцию runAllManagedModulesForAllRequests:

    <system.webServer>

       <modules runAllManagedModulesForAllRequests="true" />

    </system.webServer>

    2. Зарегистрировать обработчик:

         routes.Add("Test", new Route("Content/{*filePath}", new MyHandler()));

    3. Ну, и реализовать обработчик, унаследованный от IRouteHandler.


    • Помечено в качестве ответа Mukminoff 25 ноября 2012 г. 16:37
    • Изменено Mukminoff 25 ноября 2012 г. 16:38
    25 ноября 2012 г. 16:37

Все ответы

  • Отвечу сам себе. Изменилось поведение MVC-движка, и поэтому, путь, содержащий название файла, по умолчанию не передается в обработку .. обработчикам)). Чтобы они передавались надо:

    1. Включить в web.config опцию runAllManagedModulesForAllRequests:

    <system.webServer>

       <modules runAllManagedModulesForAllRequests="true" />

    </system.webServer>

    2. Зарегистрировать обработчик:

         routes.Add("Test", new Route("Content/{*filePath}", new MyHandler()));

    3. Ну, и реализовать обработчик, унаследованный от IRouteHandler.


    • Помечено в качестве ответа Mukminoff 25 ноября 2012 г. 16:37
    • Изменено Mukminoff 25 ноября 2012 г. 16:38
    25 ноября 2012 г. 16:37
  • "Изменилось поведение MVC-движка, и поэтому, путь, содержащий название файла, по умолчанию не передается в обработку " - ничего не изменилось, просто если маршрутизация включена, запрос подхватывается модулем маршрутизации, дальше он передаётся обработчику маршрута. Нужно было просто воспользоваться поиском, вот подобный вопрос. И ещё можете отключить StopRoutingHandler в Global.asax. Более подробно о конвейере, написано тут.

    25 ноября 2012 г. 18:23
    Модератор