Ich habe eine MVC4-App, aber ich verwende sie hauptsächlich für die WebAPI-Teile. Ich möchte eine "plain old HTML" -Datei an den Benutzer senden lassen (die dann KnockoutJS oder KendoUI verwendet, um JSON von den Webapi-Controllern zu ziehen).MVC4 - Gibt es eine Möglichkeit, den Stamm zu einer "normalen" unverarbeiteten HTML-Seite zu routen?
Ich weiß, ich kann dies tun:
routes.IgnoreRoute("{page}.html");
Und dann, wenn ich auf „localhost/index.html“ zu sehen ist es erfolgreich nur meine HTML-Seite zurück. Allerdings möchte ich wirklich den "root" Standardpfad "localhost /" zuordnen, um meine index.html zurückzugeben.
Ich versuchte dies:
routes.MapPageRoute("root", "", "~/index.html");
aber das wirft den Fehler:
There is no build provider registered for the extension '.html'. You can register one in the <compilation><buildProviders> section in machine.config or web.config. Make sure is has a BuildProviderAppliesToAttribute attribute which includes the value 'Web' or 'All'.
Wer irgendwelche Ideen, wie ich diese Arbeit machen kann? Ich könnte einfach einen Standard-Controller drücken, der eine reine HTML-Seite zurückgibt, aber es scheint übertrieben zu sein, den gesamten ASP.NET-Stack einmal für die HTML-Seite zu durchlaufen, die dann einfach eine WebAPI-URL aufruft, um durch den ASP.NET-Stack zurückzugehen um einige JSON-Daten für das Modell der Seite zu erhalten.
Ich möchte im Grunde nur, um alle MVC Sanitär „überspringen“ und haben IIS mir die HTML-Seite zurückschicken, als ob es nicht eine ASP.NET app war, oder zumindest möglichst wenig Verarbeitung tun.
Aber wenn man auf die MVC Routen erhalten, haben Sie bereits ASP.Net erreicht. Wenn IIS damit umgehen soll, müssen Sie es auf Serverebene mit Rewrite-Regeln und so einrichten. – McGarnagle
Ja, und ich bin damit einverstanden, ASP.NET etwas zu berühren. Ich dachte nur, dass ein leerer Controller Overkill ist. Mit der Ignore-Route muss es den Controller und die View zumindest nicht instanziieren und aufrufen. – CodingWithSpike