Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / MVC - При редиректе из Application_Error игнорируется культура / 2 сообщений из 2, страница 1 из 1
16.12.2013, 13:52
    #38502113
user7320
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC - При редиректе из Application_Error игнорируется культура
Из Application_Error делаю редирект на страницу с сообщением об ошибке:

Код: c#
1.
this.Response.Redirect("/Error/ErrorPage");



Страница содержит культурно-зависимые строки, например:

Код: c#
1.
2.
3.
@{
    ViewBag.Title = Locals.Views.Error.ErrorPage.Strings.Title;
}



В ресурсах у меня есть строки для русской и английской культуры:

Strings.en.resx
Strings.resx
Strings.ru-RU.resx

причём дефолтная - русская, т. к. у меня есть хелпер, который это принудительно выставляет через присовение культуре текущего потока русской культуры:

Код: c#
1.
2.
System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("ru-RU");
System.Threading.Thread.CurrentThread.CurrentUICulture = System.Threading.Thread.CurrentThread.CurrentCulture;



Так вот. Несмотря на то, что до редиректа культура была русская, на самой странице с сообщением об ошибке культура английская - т. е. строки берутся из ресурсного файла с англиской культурой. Из русской берутся, только если я удалю файл с английской.

Не помогает даже дополнительное выставление культуры до редиректа в Application_Error. Т. е. делаю так, как ниже, а всё равно культура английская:

System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("ru-RU");
System.Threading.Thread.CurrentThread.CurrentUICulture = System.Threading.Thread.CurrentThread.CurrentCulture;
this.Response.Redirect("/Error/ErrorPage");

Под дебагом значение CurrentCulture в потоке равно предыдущей выбранной культуре, а после принудительно установленной русской - русской. Но как только перехожу на страницу ошибки - английская культура. Проверил под дебагом.

Более того, культура сбрасывается на английскую даже без редиректа - если просто ввести в строку адреса в браузере "/Error/ErrorPage". При этом, если уйти на любую другую страницу, культура сохраняется выбранная до этого - русская или английская. Вобщем, выглядит всётак, как будто именно эта страница игнорирует все культурные обработки.

В веб.конфиге стоит такая настройка, если что:

Код: xml
1.
<globalization enableClientBasedCulture="true" uiCulture="auto" culture="auto"/>
...
Рейтинг: 0 / 0
16.12.2013, 14:12
    #38502155
user7320
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC - При редиректе из Application_Error игнорируется культура
Вот дурья моя бошка! Создал новый контроллер для обработки ошибок и забыл, что все контроллеры у меня унаследованы не от дефолтного Controller, а от кастомного BaseController, который с культурами-то и работает. Вобщем, проблема решена. ))
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / MVC - При редиректе из Application_Error игнорируется культура / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]