Dynamiczna konfiguracja ścieżki do źródła SPA .Net Core 3.1

0

Pytanie

Mam aplikację .Net Core 3.1, który używam jako API, ale ja także zaspokaja mój SPA (narożny). Od niedawna mam pewne problemy z SEO, dlatego chciałbym służyć statyczną wersję mojego kątowego aplikacji, gdy pojawi się Google.

Czy jest tutaj jakiś sposób na dynamicznie ustawić ścieżkę do źródła SPA?

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

Obecnie mam mały plik oprogramowania pośredniego, w którym odkrywam Google na podstawie ciąg agenta użytkownika. Następnie przekazuję to przez zapytanie.

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

Ale nie mogę uzyskać dostęp do życzenie w metodzie Configure() w pliku Startup.cs. W każdym razie, czy istnieje sposób, jak mogę sprawić to działać? Naprawdę chcę mieć możliwość dynamicznie określać drogę do źródła.

Dziękuję bardzo!

Pozdrawiam

1

Najlepsza odpowiedź

-1

Możesz spróbować następujących kodów , umieszczając intercooler oprogramowanie do metody Configure ().

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

Używam klasa pośredniego oprogramowania, aby uzyskać dostęp do Życzenie, aby określić agenta użytkownika. Ja jeszcze nie znalazłem, jak ustawić ustawienia aplikacji spa wewnątrz klasy oprogramowania pośredniego, to by rozwiązało mój problem!
Schippert

Tak, masz rację . Wiem, że użyłeś klasa pośredniego oprogramowania, aby uzyskać dostęp do Życzenie. Mam na myśli, że można spróbować umieścić intercooler oprogramowanie do metody Configure (), na przykład, przykład kodu w dokumencie służy do wykazania tworzenia komponentu oprogramowania pośredniego. Wtedy nie trzeba instalować aplikacji ustawienia spa wewnątrz klasy oprogramowania pośredniego. Oczywiście, konfigurowanie ustawień aplikacji spa wewnątrz klasy oprogramowania pośredniego-to inny sposób.
Qing Guo

Niestety, nie mogłem sprawić to działać. Jak tylko przesunąłem ten kod wewnątrz oprogramowania pośredniego, klęknął. Czy jest jakiś sposób, aby sprawdzić żądanie podczas przetwarzania metody Configure w klasie uruchomić?
Schippert

Edytuję odpowiedź, mając nadzieję, że on ci pomoże.
Qing Guo

Tak! To idzie w dobrym kierunku! Korzystanie z dostępu warunkowego oprogramowania pośredniego musi zrobić swoje (App.UseWhen). ALE w metodzie ConfigureServices także jest coś, co określa ścieżkę do katalogu głównego (AddSpaStaticFiles), co być może jest powodem, dlaczego on jeszcze nie działa.
Schippert

Twój problem został rozwiązany?
Qing Guo

W innych językach

Ta strona jest w innych językach

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