Configuração dinâmica o SPA caminho de origem no .Net Núcleo 3.1

0

Pergunta

Eu tenho um .Net Núcleo 3.1 aplicativo que eu uso como uma API, mas também serve de meu SPA (Angular). Como recentemente estou tendo alguns problemas com SEO, então eu gostaria de servir uma versão estática do meu Angular aplicação quando o Googlebot vem por aí.

É aqui de qualquer maneira para definir dinamicamente o SPA caminho de origem?

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

Atualmente tenho uma pequena middleware arquivo onde eu detectar o Googlebot com base na seqüência de UserAgent. Em seguida, passar através do pedido.

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

Mas eu não posso acessar a Pedido, o método Configure() na Inicialização.cs arquivo. Existe uma maneira de como eu posso fazer este trabalho? Eu realmente quero ser capaz de definir dinamicamente o Endereço.

Muito obrigado!

Matéria

1

Melhor resposta

-1

Você pode tentar os seguintes códigos , colocando o middleware em 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

Eu uso o Middleware de classe para obter um porão de um Pedido para que eu possa determinar o UserAgent. Eu ainda não descobrir como definir o aplicativo spa configurações dentro de um middleware de classe, que iria resolver o meu problema!
Schippert

Sim, você está certo . Eu sei que você tem usado o Middleware de classe para apossar-se do Pedido. Quero dizer, você pode tentar colocar middleware em Configurar()método, como o código de exemplo de documento é utilizado para demonstrar a criação de um middleware componente. Então você não precisa definir o aplicativo spa configurações dentro de um middleware de classe. De curso, definindo a aplicação de spa configurações dentro de um middleware é a classe de outra maneira.
Qing Guo

Infelizmente, eu não poderia fazê-lo funcionar. Uma vez proponho que o código dentro do Middleware de quebrar. Existe alguma maneira que eu possa verificar o pedido quando o processamento de Configurar o método de Inicialização de classe?
Schippert

Editar minha resposta, na esperança de que pode ajudar você.
Qing Guo

Sim! Ele está indo na direção certa! Usando o condicional, o middleware deve fazer o truque (App.Utilizaçãoao). MAS também há algo no ConfigureServices método que está a definir o rootpath (AddSpaStaticFiles) que é, talvez, causando por que ele ainda não está funcionando.
Schippert

Tem o seu problema foi resolvido?
Qing Guo

Em outros idiomas

Esta página está em outros idiomas

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