Estoy usando una aplicación angular en varios idiomas en mi proyecto de la siguiente manera:

app.Map("/en", en =>
{
    en.UseSpa(spa =>
    {
        if (env.IsDevelopment())
        {
            spa.UseProxyToSpaDevelopmentServer(LocalSpaServerUrl);
        }
        else
        {
            spa.Options.SourcePath = "ClientApp";
            spa.Options.DefaultPageStaticFileOptions = new StaticFileOptions
            {
                FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "ClientApp/dist/ClientApp/en")),
            };
        }
    });
});

app.Map("/bg", bg =>
{
    bg.UseSpa(spa =>
    {
        spa.Options.SourcePath = "ClientApp";
        spa.Options.DefaultPageStaticFileOptions = new StaticFileOptions
        {
            FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "ClientApp/dist/ClientApp/bg")),
        };
    });
});

Quiero que la ruta predeterminada sea la / en: cuando un usuario intenta acceder a '/' quiero que se redirija a '/ en'. Tenga en cuenta que esto está fuera del enrutador de Angular, por lo que no puedo manejarlo allí.

0
RapGeneral 29 ago. 2020 a las 16:08

1 respuesta

La mejor respuesta

Después de excavar mucho, encontré la forma correcta:

app.Use(async (context, next) =>
{
    if (context.Request.Path.Value == "/")
    {
        // rewrite and continue processing
        context.Request.Path = "/en/";
    }

    await next();
});

0
RapGeneral 31 ago. 2020 a las 18:14