Geroutete Lokalisierung in Identitätsseiten in ASP.NET Core MVC
Posted: 30 Dec 2024, 19:01
Ich entwickle derzeit eine Webanwendung in ASP.NET Core MVC, bei der sich Benutzer registrieren sollten. Dabei handelt es sich um eine lokalisierte Webanwendung, die in mehreren Sprachen ausgeführt werden kann. Um SEO-freundlich zu sein, habe ich mich für die geroutete Lokalisierung entschieden, sodass meine URLs so aussehen:
https://localhost:5001/en/Catalogue oder https://localhost:5001/ fr/catalogue.
Um dies zu ermöglichen, habe ich diesen Code in meine Methode „ConfigureServices“ in Startup.cs eingefügt:
In meiner Methode „Configure“ habe ich Folgendes hinzugefügt:
Das funktioniert wie ein Zauber. Ich kann meine MVC-Seiten in jede gewünschte Variante übersetzen. Mein Problem sind die Identitätsseiten. Ich habe diese Seiten als Gerüstelemente hinzugefügt. Ihre URLs verweisen auf
Ich versuche, darauf zuzugreifen
funktioniert nicht. Wie kann ich die geroutete Lokalisierung mit Identitätsseiten implementieren?
https://localhost:5001/en/Catalogue oder https://localhost:5001/ fr/catalogue.
Um dies zu ermöglichen, habe ich diesen Code in meine Methode „ConfigureServices“ in Startup.cs eingefügt:
Code: Select all
services.AddLocalization(options => options.ResourcesPath = "Resources");
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
.AddViewLocalization()
.AddDataAnnotationsLocalization();
Code: Select all
IList supportedCultures = new List
{
new CultureInfo("en"),
new CultureInfo("fr"),
};
var localizationOptions = new RequestLocalizationOptions
{
DefaultRequestCulture = new RequestCulture("en"),
SupportedCultures = supportedCultures,
SupportedUICultures = supportedCultures
};
var requestProvider = new RouteDataRequestCultureProvider();
localizationOptions.RequestCultureProviders.Insert(0, requestProvider);
app.UseRouter(routes =>
{
routes.MapMiddlewareRoute("{culture=en}/{*mvcRoute}", subApp =>
{
subApp.UseRequestLocalization(localizationOptions);
subApp.UseMvc(mvcRoutes =>
{
mvcRoutes.MapRoute(
name: "areaRoute",
template: "{culture=en}/{area:exists}/{controller=Home}/{action=Index}/{id?}");
mvcRoutes.MapRoute(
name: "default",
template: "{culture=en}/{controller=Home}/{action=Index}/{id?}");
});
});
});
Code: Select all
https://localhost:5001/Identity/Account/Register
Code: Select all
https://localhost:44339/en/Identity/Account/Register