Служба WCF получает неправильную культуру
-
25-10-2019 - |
Вопрос
У меня есть метод обслуживания, который принимает объект CultureInfo в качестве параметра. Я хочу использовать его, чтобы получить правильные строки от ресурсов по указанному языку. Итак, у меня есть метод на службе, как:
public string GetTranslatedString(CultureInfo c)
И на клиенте я называю этот метод таким образом:
ServiceReference.GetTranslatedString(CultureInfo.CurrentUICulture);
Я также пробовал:
ServiceReference.GetTranslatedString((CultureInfo)CultureInfo.CurrentUICulture.Clone());
Но это дает неправильные результаты! Объект информации о культуре передается так, как если бы он описывал культуру ПК, где находится сервис, а не культура ПК, где находится клиент. Так что, если у клиента есть культура «NL», сервер по -прежнему получает культуру «en»! Почему? Я знаю, как решить эту проблему иначе, передавая LCID в службу вместо объекта, но я действительно хочу знать, почему описанный подход не работает.
Решение
Попробуйте это (всего 4 веселья):
CultureInfo ci = CultureInfo.CurrentUICulture;
string text = ServiceReference.GetTranslatedString(ci);