Ich erstelle eine Client/Server-Lösung mit einer AngularJS Single Page App als Client-Komponente und einer Self-Host ServiceStack RESTful API als Server-Komponente. Ein einzelnes Visual Studio Console-Anwendungsprojekt enthält HTML- und JavaScript-Dateien für die AngularJS-Komponente sowie C# -Klassen für das Bootstrapping des ServiceStack AppHost (ich habe die Verantwortlichkeiten für Interface und Service auf separate Visual Studio-Projekte übertragen).Wie kann ich AngularJS mit dem ServiceStack FallbackRoute-Attribut zur Unterstützung von HTML5-Pushstate-URLs erhalten?
Ich habe alle HTML- und JavaScript-Dateien auf eine 'Build Action' von 'None' und ein 'Copy to Output Directory' von 'Copy if newer' gesetzt.
Alles funktioniert sehr gut, solange ich bereit bin, ein '#' in meinen Site-URLs zu akzeptieren. Ich möchte dies mithilfe von HTML5-Pushstate-URLs eliminieren.
Effektiv bedeutet dies, dass ich ServiceStack dazu überreden muss, meine standardmäßige Single-Page-App-HTML-Shell-Seite zu bedienen, wenn eine nicht existierende Route angefordert wird. Es gibt jetzt ein FallbackRoute Attribut available in ServiceStack, das genau zu diesem Zweck hinzugefügt wurde.
Allerdings bin ich unsicher, wie man es benutzt. Ich habe Leute gefunden, die ähnliche Fragen stellen here, here und here. Aber die Antworten waren alle bevor das neue FallbackRoute-Attribut angekommen ist.
Im Wesentlichen bin ich auf der Suche nach einem einfachen, aber vollständigen Beispiel für die Verwendung des FallbackRoute-Attributs, um sicherzustellen, dass Anfragen an nicht vorhandene Routen auf eine einzige statische HTML-Seite umgeleitet werden.
Das ist alles sehr cool. Allerdings würde ich das Razor Plugin lieber nicht hinzufügen müssen, wenn ich es nicht muss. Ich benutze eine einzelne statische HTML-Seite und es scheint übertrieben zu sein, eine Razor-Templating-Engine hinzuzufügen, um eine Fallback-Route hinzuzufügen. – Holf
hinzugefügt 'ohne Rasiermesser' Option –
Sieht sehr schön aus ... Ich werde es später ausprobieren. Vielen Dank! – Holf