Добавляем окончание .html URL-адресам в ASP.NET MVC

Даже в наше время RESTful URL адреса, которые имеют расширение .html всё ещё достаточно популярны. Рассмотрим, как сформировать подобные URL-адреса для ASP.NET MVC.

За формирование URL адреса в ASP.NET MVC отвечает маршрутизация. Именно с её помощью производится сопоставление между собственно адресом и действиями того или иного контроллера.

По умолчанию в ASP.NET MVC настроен только один единственный маршрут.

Данный маршрут полностью соответствует RESTful, но не содержит нужного нам окончания. Только, если мы просто добавим его в текст шаблона, web приложение сразу же перестанет работать.

Дело в том, что в файле Web.config по умолчанию не подключен обработчик, который позволяет корректно обрабатывать адреса оканчивающиеся .html. Кроме того, даже основные варианты адресов в подобной ситуации невозможно описать в одном шаблоне, а следовательно и реализовать в одном маршруте. Но, об этом позже.

В начале подключим нужный обработчик в файле Web.config, как показано ниже.

Теперь мы можем смело добавить окончание .html к исходному маршруту и он будет работать.

Но, в процессе работы нас ждёт разочарование. Работоспособными являются только адреса вида:

Адрес без указания параметра id такой маршрут превращает в некорректный:

А, обращение к главной странице web приложения по доменному имени и вовсе недоступно.

Как выйти из положения?

По сути, ответ на этот вопрос был дан в самом начале. Маршрутизацию для web приложения при использовании окончания .html в URL адресах невозможно реализовать в рамках одного шаблона. Следовательно, требуется создать дополнительные маршруты.

Первый маршрут имеет шаблон URL адреса в виде пустой строки. Тем самым решается проблема доступа к главной странице. Во втором маршруте из шаблона полностью исключается параметр id.

В результате маршрутизация в web приложении задаётся тремя маршрутами следующим образом:

Теперь приложение полностью работоспособно.

Источники
  1. ASP.NET MVC Routing — Intercepting file requests like Index.html, and what it teaches about how Routing works. Jon Galloway

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *