ASP.NET Core 3.1将空路由重定向到默认语言路由

时间:2020-08-29 13:08:27

标签: c# angular asp.net-core single-page-application .net-core-3.1

我在我的项目中使用多语言的角度应用程序,如下所示:

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")),
        };
    });
});

我希望默认路由为/ en:当用户尝试访问“ /”时,我希望它重定向到“ / en”。 请记住,这是在Angular路由器之外,所以我在那儿无法处理。

1 个答案:

答案 0 :(得分:0)

大量研究之后,我找到了正确的方法:

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

    await next();
});