Dinamic stabilirea SPA sursă calea .Net Core 3.1

0

Problema

Am un .Net Core 3.1 cererea pe care am folosi ca un API, dar servește, de asemenea, SPA-ul meu (Unghiulare). Cât de recent am avut unele probleme cu SEO, astfel încât aș dori să servesc o versiune statica a mea Unghiulară aplicație atunci când Googlebot vine în jurul valorii.

Este aici orice mod de a seta dinamic SPA sursă calea?

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

În prezent am o mica middleware fișier în care am detectat Googlebot pe baza UserAgent șir. Apoi trec prin cerere.

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

Dar nu pot accesa la Cerere, în Configure() metoda în Pornire.cs fișier. Oricum este acolo cum pot face acest lucru? Eu chiar vreau să fie în măsură să în mod dinamic setați SourcePath.

Multumesc mult!!!

Ce privește

1

Cel mai bun răspuns

-1

Puteți încerca următoarele coduri , punând middleware în Configura()metodă .

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

Eu folosesc Middleware clasa a obține o dețin de Cerere, deci nu pot determina UserAgent. Încă nu am găsit cum să setați aplicația spa setări în interiorul unui middleware clasa, care ar rezolva problema mea!
Schippert

Da, ai dreptate . Știu că au folosit Middleware clasa a obține o dețin de Cerere. Adică puteți încerca pentru a pune middleware în Configura()metoda, ca mostre de cod în document este utilizat pentru a demonstra crearea unui middleware componentă. Atunci nu aveți nevoie pentru a seta aplicația spa setări în interiorul unui middleware clasa. Desigur, setarea app spa setări în interiorul unui middleware clasa este un alt mod.
Qing Guo

Din păcate nu am putut face să funcționeze. Dupa ce ma mut că în codul de Middleware se rupe. Există vreo modalitate cum pot verifica la cerere, atunci când prelucrarea Configura metoda de Pornire de clasă?
Schippert

Am edita răspunsul meu, în speranța că vă poate ajuta.
Qing Guo

Da! Este o direcția cea bună! Utilizarea condiționată middleware ar trebui să facă truc (App.UseWhen). DAR există, de asemenea, ceva în ConfigureServices metodă care este setarea rootpath (AddSpaStaticFiles), care este, poate, provocând ce nu este încă de lucru.
Schippert

A ta problema a fost rezolvată?
Qing Guo

În alte limbi

Această pagină este în alte limbi

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