Dynamicky nastavenie SPA zdroj cestu .Net Core 3.1

0

Otázka

Mám .Net Core 3.1 aplikácie, ktoré používam ako API, ale slúži aj moje SPA (Hranaté). Ako nedávno som, že niektoré problémy so SEO tak by som chcel slúžiť statická verzia môjho Uhlové aplikáciu pri Googlebot príde.

Je tu nejaký spôsob, ako dynamicky nastaviť SPA zdroj cestu?

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

V súčasnosti mám malý middleware súbor, kde som zistiť Googlebot na základe UserAgent reťazec. Potom som pass, že prostredníctvom žiadosti.

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

Ale nemôžem prístup Žiadosť Configure() metóda v Štarte.cs súbor. Je tam tak, ako môžem robiť túto prácu? Som naozaj chcete byť schopní dynamicky nastaviť SourcePath.

Ďakujeme!

Ide o

1

Najlepšiu odpoveď

-1

Môžete vyskúšať nasledujúce kódy , uvedenie middleware v Konfigurovať()metóda .

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

Používam Middleware triedy, aby si drží Žiadosť, aby som mohol určiť UserAgent. Nevedel som ešte, zistiť, ako nastaviť aplikáciu spa nastavenia vnútri middleware triedy, ktorá by vyriešila môj problém!
Schippert

Áno, máte pravdu . Viem, že ste použili Middleware triedy sa získať držať na Vyžiadanie. Myslím, že môžete sa pokúsiť dať middleware v Konfigurovať()metódu, ako vzorového kódu v dokumente sa používa na preukázanie vytvorenia middleware komponentu. Potom sa nemusíte nastaviť aplikáciu spa nastavenia vnútri middleware triedy. Samozrejme, nastavenie aplikácie spa nastavenia vnútri middleware triedy je ďalší spôsob.
Qing Guo

Žiaľ, nemohol som, aby to fungovalo. Raz som sa pohybovať, že kód vnútri Middleware prestávky. Existuje nejaký spôsob, ako môžem skontrolovať žiadosť, keď spracovanie Nakonfigurovať metóda v Štarte triedy?
Schippert

Ja upraviť moju odpoveď, dúfajúc, že vám môže pomôcť.
Qing Guo

Áno! To je správny smer! Pomocou podmienené middleware mali urobiť trik (App.UseWhen). ALE je tam aj niečo v ConfigureServices metóda, ktorá je nastavenie rootpath (AddSpaStaticFiles), ktoré je možno aj príčinou, prečo nie je ešte v práci.
Schippert

Má váš problém bol vyriešený?
Qing Guo

V iných jazykoch

Táto stránka je v iných jazykoch

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