Настройка CultureInfo для вызовов служб wcf?
У меня работает служба WCF, которая должна анализировать некоторые данные. Оказывается, данные (точки, размеры) преобразуются по-разному в разных культурах, и разбор распространяется на множество классов и методов. Поскольку весь синтаксический анализ выполняется без передачи CultureInfo, успех синтаксического анализа зависит от культуры потоков.
поскольку нет программного параметра CultureInfo, служба каким-то образом выбирает текущий cultureinfo с машины. У меня есть не знаю, где он это получает, поскольку изменения региональных и языковых параметров, похоже, не влияют на cultureinfo службы wcf. Также изменения в интернете.config (да, служба размещена в iis), похоже, тоже не работает.
У меня действительно остался только один вариант? Установка CultureInfo программно? Я мог бы найти все вызовы преобразования и передать в CultureInfo или я мог бы установить его в потоке.CurrentThread.Свойства currentculture. Есть ли способ я могу установить CultureInfo раз и навсегда-оказывает влияние на все открытые методы wcf?
3 ответов
ответ об использовании тега в web.config работает только если Asp.net включен режим совместимости. Вам также нужно следующее внутри:
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
без Asp.Net режим совместимости, модули http не используются и тег игнорируется.
вы должны проверить это сообщение в блоге...
http://blogs.msdn.com/drnick/archive/2008/02/26/using-call-context-initializers-for-culture.aspx
... что показывает, как определить поведение для установки культуры.
однако, web.config должен быть вашим другом здесь. Вы должны иметь возможность настроить культуру "по умолчанию", с которой работает ваша служба.
глобализация elemenent...
http://msdn.microsoft.com/en-us/library/hy4kkhe0.aspx
... должно позволить вам установить культуру и UICulture...
<globalization
enableClientBasedCulture="true|false"
requestEncoding="any valid encoding string"
responseEncoding="any valid encoding string"
fileEncoding="any valid encoding string"
responseHeaderEncoding = "any valid encoding string"
resourceProviderFactoryType = string
enableBestFitResponseEncoding = "true|false"
culture="any valid culture string"
uiCulture="any valid culture string"/>
вы можете использовать конфигурационный файл, как Мартин, упомянутый выше, но как хорошая практика вы должны определенно установить информацию о культуре, где это необходимо для инвариантной культуры для обслуживания данных, которые передаются в разных местах. т. е. даты, строки, числа