Serve Angular Spa von der Wurzel entfernt

8

Ich möchte eine bestehende Site asp.net 4.5 mvc aktualisieren, die zwei eckige Anwendungen auf einer Site asp.netcore 2 mvc mit möglicherweise zwei Spas hat. Verwenden Sie Aspnet Javascriptservices mit der neuen eckigen CLI-Vorlage.

Idealerweise möchte ich zwei Spa's bei http://mysite/member und das andere bei http://mysite/admin

hosten

Ich habe mit nur einem members begonnen und anfangs <base href="/members/" /> in der index.html verwendet (aber dann getauscht, um die Eigenschaft baseHref "in der .angular-cli.json zu verwenden (was die gleichen Ergebnisse liefert)) welche Hälfte funktioniert lokal beim Debuggen der App liefert es Seiten und navigiert wie erwartet, aber in der Konsole kann ich zone.js Fehler sehen.

Wenn ich eine neue Registerkarte öffne und in

einfüge

http://localhost:50930/**members**/sockjs-node/info?t=1518084503138

dann bekomme ich was wie eine richtige Antwort aussieht

{"websocket":true,"origins":["*:*"],"cookie_needed":false,"entropy":2082738399}

Wenn ich dies für den Azure-App-Service (Produktion) bereitstelle und dann zu

navigiere

https://mysite.azurewebsites.net/members , dann lädt das Spa überhaupt nicht und es scheint, dass das gebündelte js die index.html hat, die es ins Innere lädt.

Hat es jemand geschafft, die eckige Spa-Vorlage als eine Anwendung außerhalb der MVC-Site zu verwenden? Ich habe ein Ticket auf dem Repo erstellt, aber ich vermute, dass es über den Rahmen des Projekts hinausgeht Ссылка

Ich habe auch ein Repo erstellt, um zu demonstrieren, was ich erreichen möchte Ссылка

    
Tim 08.02.2018, 11:54
quelle

2 Antworten

1

Sie müssen den Webserver so konfigurieren, dass er immer die Seite index.html Ihres angularen PWA zurückgibt.

Standardmäßig gibt der Server einen Fehler 404 zurück, da für / members keine Datei vorhanden ist. Aber Sie möchten eckig mit den Routen umgehen und deshalb müssen Sie immer die index.html statt einer 404-Fehlerseite bedienen.

In dieser Dokumentation wird dies explizit für die JavaScript-Services von aspnet erläutert: Ссылка

    
Andi 16.02.2018 14:22
quelle
0

Ich habe das schon mal in meinen Apps verwendet. In einer späteren Version habe ich Caching hinzugefügt, um es schneller zu machen, aber es funktioniert immer unabhängig davon, wo es bereitgestellt wird. Es erleichtert das Verschieben von Dateien zwischen Servern oder sogar nur Ordnern, besonders wenn wir zwischen Dev-, Test- und Prod-Servern wechseln.

%Vor%

Dann können Sie diese Middleware einfach von Startup.cs mit app.UseAngularDefaultRoute();

aufrufen     
BinaryPatrick 16.02.2018 16:25
quelle