Нужно добавить окончание .html
для URL-адресов в ASP.NET MVC 5.
Чтобы было, например так:
http://example.com/category1/article1.html
Пытаюсь решить задачу так:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}.html",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Получаю ошибку 403.
Что я делаю не правильно?
Выяснилось, что я всё сделал правильно. Только не до конца.
После того, как задан маршрут с суффиксом .html
, нужно соответствующим образом отредактировать web.config. Тогда всё заработает.
Ответ нашёл здесь. Хотя там рассматривается ASP.NET MVC 4, способ работает и для ASP.NET MVC 5.
<system.webServer>
...
<handlers>
<add name="HtmlFileHandler" path="*.html" verb="GET" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
...
</system.webServer>
Важное замечание
Помимо основного маршрута (с .html
в конце) необходимо определить дополнительный с пустым шаблоном url
, как это показано ниже.
routes.MapRoute(
name: "Default",
url: "",
defaults: new { controller = "Home", action = "Index" });
routes.MapRoute(
name: "html",
url: "{controller}/{action}.html",
defaults: new { controller = "Home", action = "Index" });
Если этого не сделать, главная страница сайта будет не доступна по имени домена. Тогда вместо:
http://example.com/
придётся явно указывать соответствующие главной странице контроллер и действие
http://example.com/Home/Index.html
Либо делать редирект.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравстуйте! Есть tcplistener на компьютере, и tcpclient на android смартфонеОба устройства подключены к 1 сети wifi (к компьютеру кабель от роутера, а телефон...
Добрый деньИли я где-то откровенно туплю или же и правда есть некая загвоздка
Добрый день, не могу разобраться с асинхронными методамиКак можно реализовать в приложение такую ситуацию
При работе с компонентом WindowsMedaiPlayer столкнулся со странной особенностью: мне нужно чтобы при одиночном клике по компоненту он разворачивался...