Page 1 of 1

Geroutete Lokalisierung in Identitätsseiten in ASP.NET Core MVC

Posted: 30 Dec 2024, 19:01
by Guest
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:

Code: Select all

services.AddLocalization(options => options.ResourcesPath = "Resources");

services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_1)
.AddViewLocalization()
.AddDataAnnotationsLocalization();
In meiner Methode „Configure“ habe ich Folgendes hinzugefügt:

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

Code: Select all

https://localhost:5001/Identity/Account/Register
Ich versuche, darauf zuzugreifen

Code: Select all

https://localhost:44339/en/Identity/Account/Register
funktioniert nicht. Wie kann ich die geroutete Lokalisierung mit Identitätsseiten implementieren?