. Net Core 3.1'de SPA kaynak yolunu dinamik olarak ayarlama

0

Soru

API olarak kullandığım bir. Net Core 3.1 uygulamam var ama aynı zamanda spa'ma da hizmet ediyor (Açısal). Son zamanlarda SEO ile ilgili bazı sorunlar yaşıyorum, bu yüzden Googlebot geldiğinde Açısal uygulamamın statik bir sürümünü sunmak istiyorum.

SPA kaynak yolunu dinamik olarak ayarlamanın bir yolu var mı?

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

Şu anda Googlebot'u UserAgent dizesine göre algıladığım küçük bir ara katman dosyam var. Sonra bunu istekten geçiriyorum.

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

Ancak Başlangıçta Configure() yöntemindeki Talebe erişemiyorum.cs dosyası. Bunu nasıl çalıştırabileceğim var mı? Sourcepath'i dinamik olarak ayarlayabilmek istiyorum.

Çok teşekkürler!

Saygılarımızla

1

En iyi cevabı

-1

Ara katman yazılımını Configure () yöntemine koyarak aşağıdaki kodları deneyebilirsiniz .

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

İsteği ele geçirmek için Ara Katman sınıfını kullanıyorum, böylece Useragent'ı belirleyebiliyorum. Bir ara katman sınıfının içindeki uygulama spa ayarlarını nasıl ayarlayacağımı henüz bulamadım, bu benim sorunumu çözecek!
Schippert

Evet, sen haklısın . İsteği ele geçirmek için Ara Katman sınıfını kullandığını biliyorum. Ara katman yazılımını Configure () yöntemine yerleştirmeyi deneyebilirsiniz, örneğin belgedeki örnek kod bir ara katman bileşeni oluşturmayı göstermek için kullanılır. Ardından, uygulama spa ayarlarını bir ara katman sınıfının içinde ayarlamanıza gerek yoktur. Tabii ki, uygulama spa ayarlarını bir ara katman sınıfının içinde ayarlamak başka bir yoldur.
Qing Guo

Ne yazık ki ben değil yapmak o iş. Bu kodu Ara Katman Yazılımının içine taşıdığımda kırılır. Başlangıç sınıfında Configure yöntemini işlerken isteği nasıl kontrol edebileceğimin bir yolu var mı?
Schippert

Size yardımcı olabileceğini umarak cevabımı düzenliyorum.
Qing Guo

Evet! Doğru yöne gidiyor! Koşullu ara katman yazılımını kullanmak hile yapmalıdır (Uygulama.UseWhen). ANCAK ConfigureServices yönteminde kök yolunu (AddSpaStaticFiles) ayarlayan ve belki de neden henüz çalışmadığına neden olan bir şey de var.
Schippert

Senin sorun çözüldü mü?
Qing Guo

Diğer dillerde

Bu sayfa diğer dillerde

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