#asp.net #routing #url-routing
#asp.net #маршруты #url-маршрутизация
Вопрос:
Я работаю над ASP.NET Проект веб-форм 4.0, использующий маршрутизацию страниц для обслуживания содержимого CMS.
Точный используемый код:
routes.MapPageRoute("ContentNavigateUrl", "{*navigateurl}", "~/Router.aspx", true, new RouteValueDictionary { }, new RouteValueDictionary { { "navigateurl", @"[-_a-zA-Z0-9/] (.aspx(?. )?)?" } });
Веб-сайт содержит смесь фиксированных страниц aspx и страниц CMS, обслуживаемых Router.aspx.
Содержимое CMS содержит URL-адреса, подобные /xyz / abc.
Все работает хорошо, за исключением случаев, когда фактическая папка существует, и поскольку в папке нет страницы по умолчанию, IIS отправляет ошибку 403 (просмотр каталога не включен).
В качестве примера:
Существует реальная папка с именем /xyz, в которой есть несколько aspx-страниц, но нет страницы по умолчанию. Если я запрошу http://domain.com/xyz Вместо этого я получаю ошибку 403, используя Router.aspx так, как я хочу, и отображая содержимое моей CMS.
Есть ли настройка IIS, которую необходимо изменить, или что-то в моем коде?
Спасибо.
Комментарии:
1. Я пытался исправить эти 403 ошибки в web.config, но, похоже, это ничего не дало: <код состояния ошибки =»403″ redirect =»/Router.aspx»/>
2. Кстати, какую версию IIS вы используете? Я предполагаю, что ваша проблема как-то связана с сопоставлениями обработчиков, попробуйте немного поиграть с ними (например, попробуйте отключить сопоставление обработчиков StaticFile).
3. У меня нет доступа к серверу, кроме как для копирования файлов туда. Я полагаю, что это IIS 7.5.
Ответ №1:
Проблема была решена путем добавления сопоставления ошибок для кода состояния 403 для перенаправления в /Router.aspx в IIS.