I może spodziewałem się zbyt wiele od ASP.NET, ale w Apache to banalne przepisać adresy URL, więc zainteresowanie coś takiego: http://mysite/myfolder/mypage/niceurlparameter faktycznie zarządza służyć strona statyczna http://mysite/mypage.htmlCo jest nie tak z tym routingiem Global.asax?
Jak to zrobić w Global.asax?
Próbowałem to:
RouteTable.Routes.MapPageRoute("Static HTML", "myfolder/{page}/*", "~/myfolder/{page}.html");
ale utrzymuje powrocie 404 kiedy zażądać http://mysite/myfolder/mypage/niceurlparameter.
Jednak to działa:
RouteTable.Routes.MapPageRoute("Static HTML", "myfolder/{page}.html/*", "~/myfolder/{page}.html");
więc rozumiem mojastrona.html przy żądaniu http://mysite/myfolder/mypage.html/niceurlparameter.
Po prostu chcę pozbyć się części ".html" w moich adresach URL. czego mi brakuje?
AKTUALIZACJA: Z jakiegoś powodu w poprzednim przypadku symbol wieloznaczny "*" nie został zaakceptowany.
Zmiana na: wydaje się trasa wniosek do strony HTML
RouteTable.Routes.MapPageRoute("Static HTML", "myfolder/{page}/{whatever}", "~/myfolder/{page}.html");
, ale potem pojawia się błąd:
There is no build provider registered for the extension '.html'.
Dlaczego na świecie jest po prostu pracować w pierwszym przypadku (z html w adresie URL), a nie kiedy HTML jest pominięty?
Jaką wersję IIS używasz? Wydaje się, że pamiętam, że IIS 6 nie pozwoli na to po wyjęciu z pudełka, musisz dodać mapowanie wieloznaczne. –
Zobacz to pytanie, aby znaleźć możliwe rozwiązanie: http://stackoverflow.com/q/9918066/25727 – Jan
IIS jest v7.5. Sugerowany link pomógł. Dzięki – tishma