Configurar dinámicamente el SPA ruta de acceso de origen en .Net Core 3.1

0

Pregunta

Tengo un .Net Core 3.1 aplicación que yo uso como una API sino que también sirve a mi SPA (Angular). Como recientemente estoy teniendo algunos problemas con el SEO, así que me gustaría servir en una versión estática de mi Angulares de aplicación cuando el Robot de google viene alrededor.

Es aquí alguna manera para establecer dinámicamente el SPA ruta de acceso de origen?

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

Actualmente tengo un pequeño middleware archivo donde puedo detectar el Robot de google basado en la cadena de UserAgent. Luego me paso que a través de la solicitud.

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

Pero no puedo acceder a la Solicitud en el método Configure() en el Inicio.cs archivo. Existe de todos modos ¿cómo puedo hacer este trabajo? Realmente quiero ser capaz de establecer dinámicamente el SourcePath.

Muchas gracias!

Saludos

1

Mejor respuesta

-1

Usted puede intentar los siguientes códigos , poniendo el middleware en Configurar()método .

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

Yo uso el Middleware de la clase para obtener una bodega de la Petición, de modo que puede determinar el UserAgent. Yo aún no encuentra cómo establecer la aplicación de spa ajustes dentro de un middleware de clase, que iba a solucionar mi problema!
Schippert

Sí, estás en lo correcto . Sé que usted ha utilizado el Middleware de la clase para obtener una bodega de la Solicitud. Me refiero a que usted puede tratar de poner middleware en Configurar()método, como el código de ejemplo en el documento se utiliza para demostrar la creación de un componente middleware. Entonces usted no tiene que ajustar la aplicación de spa ajustes dentro de un middleware de la clase. Por supuesto, la configuración de la aplicación de spa ajustes dentro de un middleware de la clase es de otra manera.
Qing Guo

Lamentablemente no pude hacer que funcione. Una vez que me muevo que el código dentro del Middleware se rompe. Es allí cualquier manera de cómo puedo comprobar que la solicitud al procesar el método Configure () en la clase de Inicio?
Schippert

Puedo editar mi respuesta, con la esperanza de que le puede ayudar.
Qing Guo

Sí! Es ir en la dirección correcta! Uso de condicionales middleware debe hacer el truco (App.Empleoal). PERO también hay algo en el ConfigureServices método que es la configuración de la rootpath (AddSpaStaticFiles) que es, quizás, causando por qué todavía no está funcionando.
Schippert

Su problema ha sido resuelto?
Qing Guo

En otros idiomas

Esta página está en otros idiomas

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