Blazor lato server dietro il proxy inverso 404


10

Ho un'app blazor lato server ospitata su IIS dietro un proxy inverso (usando ARR).

Ho provato tutto quello che mi viene in mente, ma continuo a ricevere 404

_framework / blazor.server.js

Il mio href di base è impostato su "/ subsite /":

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

e tutti i miei valori src sono relativi in ​​questo modo:

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

Ogni altro ref di script viene caricato correttamente, ANCHE i dati di _content, ma non blazor.server.js.

Ho provato anche il vecchio trucco PathBase per le app MVC senza successo:

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

Qualcuno può dirmi come far capire a Blazor dove collocare blazor.server.js in uno scenario di proxy inverso?


1
blazor.server.js è una risorsa incorporata. puoi provare a ottenere una copia del file e servirlo staticamente come qualsiasi altro file js. Ma anche allora c'è un sacco di chiacchiere segnale-r tra il server e il browser. Non sono sicuro di come funzionerà nella tua configurazione.
ravi,

Hmm. Non lo capisco davvero, perché anche i componenti sono risorse incorporate, vivono in _content, ma li trova perfetti. Proverò ad afferrarlo e servirlo staticamente, ma questo sembra un vero bug - voglio dire, come puoi dimenticare di supportare i siti secondari di proxy inverso nel 2019
Dynde,

Hai qualche registrazione disponibile per vedere quale (e se) percorso di richiesta termina con ASP.NET?
Henk Holterman,

Risposte:



-1

Da documenti .

Riscrivi gli URL per il routing corretto

Le richieste di routing per i componenti della pagina in un'app WebAssembly di Blazor non sono così semplici come le richieste di routing in un server Blazor, un'app ospitata. Prendi in considerazione un'app Blazor WebAssembly con due componenti:

  • Main.razor : carica nella directory principale dell'app e contiene un collegamento al Aboutcomponente ( href="About").
  • About.razor - Aboutcomponente.

Quando viene richiesto il documento predefinito dell'app utilizzando la barra degli indirizzi del browser (ad esempio, https://www.contoso.com/):

  • Il browser effettua una richiesta.
  • Viene restituita la pagina predefinita, che di solito è index.html .
  • index.html avvia l'avvio.
  • Il router di Blazor viene caricato e il Maincomponente Razor viene visualizzato.

Nella pagina principale, la selezione del collegamento al componente Informazioni funziona sul client poiché il router Blazor impedisce al browser di effettuare una richiesta su Internet www.contoso.comper Aboute serve il Aboutcomponente renderizzato stesso. Tutte le richieste di endpoint interni nell'app Blazor WebAssembly funzionano allo stesso modo: le richieste non attivano le richieste basate su browser a risorse ospitate su server su Internet. Il router gestisce le richieste internamente.

Se viene effettuata una richiesta utilizzando la barra degli indirizzi del browser per www.contoso.com/About, la richiesta ha esito negativo. Nessuna risorsa di questo tipo esiste sull'host Internet dell'app, quindi viene restituita una risposta 404 - Non trovato .

Poiché i browser inviano richieste agli host basati su Internet per le pagine lato client, i server Web e i servizi di hosting devono riscrivere tutte le richieste di risorse non fisicamente sul server nella pagina index.html . Quando viene restituito index.html , il router Blazor dell'app prende il sopravvento e risponde con la risorsa corretta.

Quando si esegue la distribuzione su un server IIS, è possibile utilizzare l'URL Rewrite Module con il file web.config pubblicato dell'app . Per ulteriori informazioni, consultare la sezione IIS .


Forse potresti provare ad abilitare il proxy forward in manager IIS-> nodo server-> cache routing richieste applicazione-> proxy-> abilita.

Se si dispone di un solo sito Web, è possibile semplicemente aggiungere il sito Web alla server farm ARR e quindi verrà creata automaticamente la regola di routing. Sarà conveniente monitorare il server back-end con controllo dello stato.

Questo avviso ARR sta causando il mio 404?


Bene, per quanto posso vedere, quell'articolo ruota attorno a Blazor WebAssembly e sto usando il lato server. Inoltre, il mio IIS sta già utilizzando la funzionalità di proxy inoltro di ARR (poiché è così che eseguo il proxy inverso nella mia configurazione).
Dynde,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.