Wrapping StaticFileMiddleware zum Umleiten von 404 Fehlern

7

Ich versuche, eine benutzerdefinierte Middleware in meine OWIN-Pipeline zu injizieren, die die von MS zur Verfügung stehende StaticFileMiddleware umschließt, um HTML 5-Modus in AngularJS zu unterstützen. Ich folge diesem Leitfaden: Ссылка

Nachdem ich herausgefunden habe, wie das funktionieren soll, gibt meine Middleware Anfragen an die statische Middleware-Datei weiter, und wenn sie diese Anfragen nicht lösen kann (zB eine Anfrage für einen HTML 5-Winkelpfad, "/ whatever"), gibt es stattdessen die Basis-Winkelseite zurück, so dass eine harte Anfrage für einen HTML-5-Pfad funktioniert.

Mein Problem ist, dass das Ergebnis des Aufrufs der inneren Middleware immer ein Statuscode von 200 zu sein scheint, obwohl ich in meinem Browser eine 404 bekomme, was mich am Kopf kratzt. Hier ist mein Code als Referenz:

%Vor%     
Joshua Barron 18.09.2014, 15:32
quelle

2 Antworten

17

Von Ihrer Frage bin ich nicht sicher, ob Sie IIS oder Selfhost verwenden. Wenn Sie IIS verwenden, gibt es eine viel sauberere / schnellere Lösung als mit OWIN-Middleware: Sie können das IIS Rewrite Engine verwenden, kopieren Sie das Folgende in Ihre Webkonfiguration.

%Vor%

Mit dieser Zeile können alle Dateien normal bedient werden:

%Vor%

Mit dieser Zeile kann die API normal bedient werden

%Vor%

Alles andere bekommt index.html

    
Joe 21.09.2014, 04:01
quelle
1

Ich wollte nicht mit IIS verbunden sein, mit der Art und Weise, wie der asp.net-Kern voranschreitet. Hier ist, wie ich es mit OWIN funktionierte:

%Vor%

Ich musste next() aufrufen, bevor ich nach dem Statuscode gesucht habe, weil ich davon ausgehe, dass die andere Middleware das 404 nicht setzen wird, bis alle Middleware damit umgehen kann.

HAFTUNGSAUSSCHLUSS: Ich beginne gerade, OWIN-basiertes Hosting zu erforschen, obwohl dies zu funktionieren scheint, könnte es einige nicht-beste Praktiken geben.

    
David Faivre 17.04.2016 00:53
quelle

Tags und Links