У меня есть веб-сайт MVC 5 с локализованными маршрутами, определенными как
routes.MapRoute(
name: "Default",
url: "{culture}/{controller}/{action}/{id}",
defaults: new { culture = CultureHelper.GetDefaultCulture(), controller = "Home", action = "Index", id = UrlParameter.Optional }
);
Если культура по умолчанию имеет значение "en-US"
.
Проблема возникает, когда при запуске я должен определить URL-адрес входа, используя свойство LoginPath, которое устанавливается один раз, и оно всегда будет использовать предоставленное значение, например. культура по умолчанию, если "/en-Us/Account/Login" является указанным значением. Затем я попытался использовать класс UrlHelper в надежде испытать некоторую магию, но результат, очевидно, тот же:
var httpContext = HttpContext.Current;
if (httpContext == null) {
var request = new HttpRequest("/", "http://example.com", "");
var response = new HttpResponse(new StringWriter());
httpContext = new HttpContext(request, response);
}
var httpContextBase = new HttpContextWrapper(httpContext);
var routeData = new RouteData();
var requestContext = new RequestContext(httpContextBase, routeData);
UrlHelper helper = new UrlHelper(requestContext);
var loginPath = helper.Action("Login", "Account");
// Enable the application to use a cookie to store information for the signed in user
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString(loginPath)
});
Мой вопрос: есть ли способ взломать этот механизм для динамического извлечения текущей культуры или я вынужден установить текущую культуру в файл cookie, и, когда я перенаправлен на страницу входа в систему, используйте значение cookie для установить текущую культуру перед отображением страницы?
Спасибо