Ich erwarte vielleicht zu viel von ASP.NET, aber in Apache ist es trivial Urls zu umschreiben so etwas anfordernden wie: http://mysite/myfolder/mypage/niceurlparameter schafft es tatsächlich, statische Seite http://mysite/mypage.htmlWas ist falsch an dieser Global.asax Routing-Einstellung?
Wie ich in Global.asax tue das dienen?
Ich habe dies versucht:
RouteTable.Routes.MapPageRoute("Static HTML", "myfolder/{page}/*", "~/myfolder/{page}.html");
aber es hält 404 zurückkehrt, wenn ich http://mysite/myfolder/mypage/niceurlparameter fordern.
Dies funktioniert jedoch:
RouteTable.Routes.MapPageRoute("Static HTML", "myfolder/{page}.html/*", "~/myfolder/{page}.html");
, damit ich mypage.html erhalten, wenn http://mysite/myfolder/mypage.html/niceurlparameter anfordern.
Ich möchte nur ".html" Teil in meinen URLs loswerden. Was vermisse ich?
UPDATE: Aus irgendeinem Grund wurde im ersten Fall der Platzhalter '*' nicht akzeptiert.
Wechsel zu:
RouteTable.Routes.MapPageRoute("Static HTML", "myfolder/{page}/{whatever}", "~/myfolder/{page}.html");
erscheint die Aufforderung zur Route Seite HTML, aber dann bekomme ich den Fehler:
There is no build provider registered for the extension '.html'.
Warum in der Welt würde es nur im ersten Fall arbeiten (mit html in URL), und nicht wenn html weggelassen wird?
Welche Version von IIS verwenden Sie? Ich scheine mich zu erinnern, dass IIS 6 dies nicht erlauben wird, müssen Sie eine Wildcard-Mapping hinzufügen. –
Siehe diese Frage für eine mögliche Lösung: http://stackoverflow.com/q/9918066/25727 – Jan
IIS ist v7.5. Der vorgeschlagene Link half. Danke – tishma