c# - Asp.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 的路由器之外,所以我无法在那里处理。
解决方案
经过大量挖掘,我找到了正确的方法:
app.Use(async (context, next) =>
{
if (context.Request.Path.Value == "/")
{
// rewrite and continue processing
context.Request.Path = "/en/";
}
await next();
});
推荐阅读
- c# - Add Default action in the route attribute
- c++ - What is wrong with the output of this attempt at dynamically resizing an array?
- python-3.x - 为什么我尝试提交表单返回“不是有效的日期时间值”
- javascript - 动态创建函数并将它们传递到 Google Docs 产品(Docs、Sheets 等)的自定义菜单中
- json - 使用 axios 发送 post 请求,参数为 JSON 对象
- bash - 在 Mac .bashrc 中分配变量以播放 afplay 'sound/path.mp3'
- html - Centering relative div to background image
- c++ - How to find out what module is missing with a C++ node addon
- c++ - how to implement this 2d vector to my code
- c# - 有没有办法将字符串类型的数组写入文件?