Strona serwera Blazor za odwrotnym proxy 404

10

Mam świetną aplikację po stronie serwera hostowaną na IIS za zwrotnym proxy (używając ARR).

Próbowałem wszystkiego, co mogłem wymyślić, ale ciągle otrzymuję 404

_framework / blazor.server.js

Mój podstawowy href jest ustawiony na „/ subsite /”:

<base href="https://stackoverflow.com/subsite/" />

i wszystkie moje wartości src są względne:

<script src="_framework/blazor.server.js"></script>
<script src="_content/BlazorInputFile/inputfile.js"></script>
<script src="animations.js"></script>

Co drugi skrypt ładuje się dobrze, NAWET dane _content, ale nie blazor.server.js.

Próbowałem też starej sztuczki PathBase dla aplikacji MVC, ale bez powodzenia:

if (!env.IsDevelopment()) {
    app.Use((context, next) => {
        context.Request.PathBase = new PathString("/subsite");
        return next();
    });
}

Czy ktoś może mi powiedzieć, jak sprawić, by Blazor zdał sobie sprawę, gdzie umieścić plik blazor.server.js w scenariuszu odwrotnego proxy?

Dynde
źródło
1
blazor.server.js jest zasobem osadzonym. możesz spróbować uzyskać kopię pliku i statycznie serwować go jak każdy inny plik js. Ale nawet wtedy między serwerem a przeglądarką jest dużo rozmów. Nie jestem pewien, jak to będzie działać w twojej konfiguracji.
ravi
Hmm Naprawdę tego nie rozumiem, ponieważ komponenty są również zasobami osadzonymi, żyjącymi w _content, ale wydaje się, że są w porządku. Spróbuję go pobrać i podać statycznie, ale wydaje się, że to prawdziwy błąd - to znaczy, jak możesz zapomnieć o obsłudze odwrotnych podrzędnych serwerów proxy w 2019 r.
Dynde,
Czy masz dostępne rejestrowanie, aby sprawdzić, która ścieżka żądania (i jeśli) kończy się na ASP.NET?
Henk Holterman,

Odpowiedzi:

-1

Z dokumentów .

Przepisz adresy URL w celu poprawnego routingu

Żądania routingu komponentów strony w aplikacji Blazor WebAssembly nie są tak proste jak żądania routingu w hostowanej aplikacji Blazor Server. Rozważ aplikację Blazor WebAssembly z dwoma komponentami:

  • Main.razor - Ładuje się w katalogu głównym aplikacji i zawiera link do Aboutcomponent ( href="About").
  • About.razor - Aboutkomponent.

Gdy żądany jest domyślny dokument aplikacji za pomocą paska adresu przeglądarki (na przykład https://www.contoso.com/):

  • Przeglądarka wysyła żądanie.
  • Zwracana jest domyślna strona, która zwykle jest index.html .
  • index.html uruchamia aplikację.
  • Router Blazora ładuje się, a Mainkomponent Razor jest renderowany.

Na stronie głównej, wybierając link do składowych o pracach na klienta, ponieważ router Blazor zatrzymuje przeglądarkę z składając wniosek na internecie www.contoso.comdla Aboutserwuje renderowany Aboutsamego komponentu. Wszystkie żądania dotyczące wewnętrznych punktów końcowych w aplikacji Blazor WebAssembly działają w ten sam sposób: żądania nie wyzwalają żądań opartych na przeglądarce do zasobów hostowanych na serwerze w Internecie. Router obsługuje żądania wewnętrznie.

Jeśli żądanie zostanie wykonane za pomocą paska adresu przeglądarki www.contoso.com/About, żądanie nie powiedzie się. Nie ma takiego zasobu na hoście internetowym aplikacji, więc zwracana jest odpowiedź 404 - Nie znaleziono .

Ponieważ przeglądarki wysyłają żądania do hostów internetowych dla stron po stronie klienta, serwery WWW i usługi hostingowe muszą przepisać wszystkie żądania zasobów, które nie znajdują się fizycznie na serwerze, na stronę index.html . Gdy index.html jest zwracany, routera Blazor aplikację za przejmuje i odpowiada prawidłowej zasobu.

Podczas wdrażania na serwerze IIS można użyć modułu przepisywania adresów URL z opublikowanym plikiem web.config aplikacji. Aby uzyskać więcej informacji, zobacz sekcję IIS .


Być może możesz spróbować włączyć przekazywanie proxy w Menedżerze IIS-> węźle serwera-> pamięci podręcznej routingu żądań aplikacji-> proxy-> włącz.

Jeśli masz tylko jedną witrynę internetową, możesz po prostu dodać witrynę do farmy serwerów ARR, a następnie automatycznie utworzy regułę routingu. Wygodnie będzie monitorować serwer zaplecza za pomocą kontroli poprawności.

Czy to ostrzeżenie ARR powoduje moje 404?

Hamza Rashid
źródło
Cóż, o ile widzę - ten artykuł obraca się wokół Blazor WebAssembly, a ja korzystam ze strony serwera. Co więcej, moje IIS już korzystają z funkcji przekazywania proxy ARR (ponieważ tak robię odwrotne proxy w mojej konfiguracji).
Dynde