asp.net mvc hosting eckige app mit html5mode und routing

8

Alles klar, also hoste ich ein angularjs in asp.net mvc 5 und benutze das html5mode(true) in meiner eckigen App, um alle Hashzeichen in der URL loszuwerden. Alles funktioniert jedoch gut, mit meinem aktuellen Setup, das so aussieht:

RouteConfig.cs:

%Vor%

Wenn ich also zu http://url/app/myangularroute navigiere, gibt meine Aktion Ng / Index die Ansicht zurück, die den ng-view-Container enthält, und die eckige App ist jetzt aktiv und funktioniert mit der bereitgestellten Route

Nun, mein Problem hier ist, wenn ich zu http://url/app/ navigiere, gibt es einen dir listning nicht erlaubten Fehler, den ich nicht verstehen kann. Sollte meine Indexaktion nicht zurückgegeben werden, wenn der Winkelparameter auf optional gesetzt ist?

Und kann ich irgendwie die "App" komplett vermeiden und meine eckige App trotzdem funktionieren lassen? Ich habe einige Rewrite-Regeln versucht, aber das gibt mir viele Fehler, weil ich die MVC-Bündelung und Minification-Funktionalität verwende.

Ich könnte damit leben, dass die URL das aktuelle Format ist, aber ohne den optionalen Parameter wie http://url/app/

anzugeben

Außerdem ist es nur eine eckige App, keine andere mvc-Ansicht als der index.cshtml-Wrapper.

Dieser Typ scheint es zur Arbeit zu bringen, aber ich kann seine mvc routen nicht sehen

    
Josef 08.09.2014, 18:29
quelle

6 Antworten

16

Fügen Sie dies in Ihren web.config sytem.webserver -Einstellungen hinzu.

%Vor%

BEARBEITEN :

Versuchen Sie, Ihre RouteConfig.cs wie folgt zu ändern:

%Vor%

EDIT2:

Ich habe diese Frage komplett vergessen, aber jetzt habe ich festgestellt, dass das Problem vielleicht darin besteht, dass Sie Ihren IIS-Server nicht für die Arbeit mit Html5Mode konfiguriert haben. Sehen Sie sich dies an: Ссылка

Konkreter dieser Teil:

Azure IIS schreibt Folgendes neu:

%Vor%

Ich hoffe, dass dies hilft.

    
Josep 08.09.2014, 19:04
quelle
7

Das ist meine Lösung. Ich benutze ASP.NET MVC + Web API. ASP.NET MVC gibt immer dieselbe HTML-Seite für jede URL zurück, sodass AngularJS in $ locationProvider.html5Mode (true);

übernehmen kann

RouteConfig.cs

%Vor%

WebApiConfig.cs

%Vor%

HomeController.cs

%Vor%     
Toolkit 14.11.2014 02:03
quelle
2

Alles klar, ich habe es funktioniert.

Indem Sie dies tun:

  1. Entfernen Sie die Route "app" vollständig und verwenden Sie die Standardroute.
  2. Fügen Sie die Rewrite-Regel hinzu
  3. Entfernen Sie den Basis-href aus dem Layout

Ohh wow, ich habe die Bündelung und die Verkleinerung ausgeschaltet, das hat es am Ende wirklich geschafft. Wenn ich es einschalte, bekomme ich einen Winkelfehler.

Ich dachte ehrlich gesagt, dass ich das zehnmal ohne Erfolg versucht habe. Es fing an, Zeichen der Arbeit zu zeigen, als ich die Basis href entfernte.

    
Josef 09.09.2014 18:35
quelle
0

Mit meiner ASP.NET 5 RC-Site - hat WebAPI, aber nicht MVC - bestand die Lösung darin, eine Standard-Rewrite-Regel in wwwroot \ web.config system.webserver tag:

zu erstellen %Vor%     
Thomas Hagström 19.05.2016 09:27
quelle
0

Ich habe das gleiche Problem, ich habe die Basis href in layout.cshtml gesetzt, legen Sie die Webconfig Rewrite-Regel, beim Laden der App, In Bundle-Konfiguration habe ich alle Skripte und css beim Start der App, seine gesetzt nicht geladen werden. unerwarteter Syntaxfehler & lt; wird in der Konsole angezeigt.

Wenn ich die Regel und Basis-href und Standortanbieter ist falsch, es funktioniert gut.

Angular Js Strange Problem Ui Router Html5mode aktiviert Seite aktualisieren Problem in MVC 500 Fehler

    
Mohamed Sahir 20.05.2016 21:45
quelle
0

Alte Frage, aber immer noch gültig, das ist meine Lösung:

%Vor%     
Exlord 11.03.2018 07:29
quelle

Tags und Links