none
ASP.NET Маршрутизация для URL-адреса, содержащего имя файла с расширением RRS feed

  • Вопрос

  • Доброго дня, подскажите, пожалуйста, возникает ошибка(404 - File or directory not found.) при роутинге для URL-адресов , содержащих название файла с расширением отличным от aspx, ashx, axd, т.е. при правила 1-3 работают, а правило 4 выдает 404. Обращение к файлу напрямую, миную роутинг.

    Как зарегистрировать в web.config новое расширение для роутинга, например: jpg?

    <%@ Application Language="VB" %>
    <%@ Import Namespace="System.Web.Routing" %>
    <script RunAt="server">
    
        Sub RegisterRoutes(ByVal routes As RouteCollection)
            routes.MapPageRoute("rule1", "myImages/1.aspx", "~/test.aspx")
            routes.MapPageRoute("rule2", "myImages/1.ashx", "~/test.aspx")
            routes.MapPageRoute("rule3", "myImages/1.axd", "~/test.aspx")
            routes.MapPageRoute("rule4", "myImages/1.jpg", "~/test.aspx")
        End Sub
    
        Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
            RegisterRoutes(RouteTable.Routes)
        End Sub
          
    </script>
    

    • Перемещено YatajgaEditor 19 ноября 2013 г. 9:15
    17 ноября 2013 г. 15:38

Ответы

  • Уважаемый Yatajga, спасибо большое за помощь. Проблема решена на хостинге:Сменили режим пула в Integrated, сейчас работает.

    • IIS 7.0 (integrated mode) - No special configuration necessary to use ASP.NET Routing.
    • IIS 7.0 (classic mode) - You need to perform special configuration to use ASP.NET Routing.
    • IIS 6.0 or below - You need to perform special configuration to use ASP.NET Routing.
    • Изменено monteloro 19 ноября 2013 г. 15:15
    • Помечено в качестве ответа monteloro 19 ноября 2013 г. 18:09
    19 ноября 2013 г. 13:47

Все ответы

  • Тут у вас дело скорее всего не в расширениях, а вподключённых модулях. Посмотрите прописано ли это у вас.

    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true" />
    </system.webServer>


    Сделаем содержимое сообщества лучше, вместе!

    19 ноября 2013 г. 9:20
    Модератор
  • Прописал не помогло.
    19 ноября 2013 г. 9:55
  • В службе поддержки хостинга на мой вопрос мне прислали, следующий ответ:

    Напишите, пожалуйста, какие именно настройки сервера необходимы для работы этого правила.

    Вот тоже хотел, уважаемый Yatajga, есть ли такие настройки у самого сервера?

    Заранее благодарю.

    19 ноября 2013 г. 12:04
  • Уважаемый Yatajga, спасибо большое за помощь. Проблема решена на хостинге:Сменили режим пула в Integrated, сейчас работает.

    • IIS 7.0 (integrated mode) - No special configuration necessary to use ASP.NET Routing.
    • IIS 7.0 (classic mode) - You need to perform special configuration to use ASP.NET Routing.
    • IIS 6.0 or below - You need to perform special configuration to use ASP.NET Routing.
    • Изменено monteloro 19 ноября 2013 г. 15:15
    • Помечено в качестве ответа monteloro 19 ноября 2013 г. 18:09
    19 ноября 2013 г. 13:47
  • Не за что. Да, мысль о том, что на современных хостинг-провайдерах пул по умолчанию будет работать не в интегрированном режиме в голову не пришла. Спасибо, что не забыли и выложили решение.

    Сделаем содержимое сообщества лучше, вместе!

    20 ноября 2013 г. 5:39
    Модератор
  • Если пул не интегрированный, то обязательно ,что ни будь не работает.

    20 ноября 2013 г. 7:03
  • Да, потому, что используется старая модель конвейера IIS 6, это сделано для поддержки старых приложений. Нет нужды использовать его.

    Сделаем содержимое сообщества лучше, вместе!

    20 ноября 2013 г. 7:06
    Модератор