L'impostazione dinamica SPA percorso di origine nel .Net Core 3.1

0

Domanda

Ho una .Net Core 3.1 applicazione che uso come API, ma serve anche mio SPA (Angolare). Come di recente sto avendo alcuni problemi con la SEO, quindi vorrei avere una versione statica del mio Angolare applicazione quando Googlebot viene intorno.

Qui è qualche modo per impostare dinamicamente il centro BENESSERE percorso di origine?

app.UseStaticFiles();
app.UseSpaStaticFiles();
app.UseSpa(spa =>
{
    spa.Options.SourcePath = "ClientApp";
});

Attualmente ho un piccolo middleware file dove mi rilevare Googlebot basato sulla stringa UserAgent. Poi ho passare che attraverso la richiesta.

public async Task InvokeAsync(HttpContext context)
{
    var userAgent = context.Request.Headers["User-Agent"];
    context.Items["isCrawler"] = userAgent.Contains("Googlebot");
    await _next(context);
}

Ma io non posso accedere alla Richiesta, il metodo Configure() in Avvio.cs file. C'è in ogni caso come posso fare questo lavoro? Voglio davvero essere in grado di impostare dinamicamente il SourcePath.

Grazie mille!

Saluti

1

Migliore risposta

-1

È possibile provare i seguenti codici , mettendo il middleware in Configurazione()metodo .

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
 
            app.Use(async (context, next) =>
            {
                var userAgent = context.Request.Headers["User-Agent"];
                context.Items["isCrawler"] = userAgent.Contains("Googlebot");
                if ((bool)context.Items["isCrawler"])
                {
                    app.UseSpa(spa =>
                    {
                        spa.Options.SourcePath = "ClientApp";
                    });
                }
                else {
                    //do your stufff....
                }
                // Call the next delegate/middleware in the pipeline
                await next();
            });
     …}
2021-11-25 01:41:49

Io uso il Middleware di classe per ottenere una sospensione della Richiesta, così posso determinare l'UserAgent. Non ho ancora a capire come impostare l'app spa impostazioni all'interno di un middleware di classe, che sarebbe risolvere il mio problema!
Schippert

Sì, hai ragione . So di aver usato il Middleware di classe per ottenere una sospensione della Richiesta. Voglio dire, si può provare a mettere il middleware in Configurazione()metodo, come il codice di esempio nel documento viene utilizzato per dimostrare la creazione di un componente middleware. Quindi non c'è bisogno di impostare l'applicazione spa impostazioni all'interno di un middleware di classe. Naturalmente, l'impostazione dell'app spa impostazioni all'interno di un middleware di classe è un altro modo.
Qing Guo

Purtroppo non ho potuto farlo funzionare. Una volta che sposto il codice all'interno del Middleware di rompersi. C'è qualche modo in cui posso controllare la richiesta durante l'elaborazione del metodo di Configurazione di Avvio della classe?
Schippert

Posso modificare la mia risposta, sperando che ti può aiutare.
Qing Guo

Sì! Si sta andando nella giusta direzione! Usando il condizionale middleware dovrebbe fare il trucco (App.UseWhen). MA c'è anche qualcosa in ConfigureServices metodo che rootpath (AddSpaStaticFiles) che è forse causando perché non è ancora funzionante.
Schippert

Il vostro problema è stato risolto?
Qing Guo

In altre lingue

Questa pagina è in altre lingue

Русский
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................