在同一解决方案中为CurrentCulture获取两个不同的值

时间:2018-01-24 17:35:00

标签: c# asp.net asp.net-web-api web cultureinfo

我的解决方案中有多个项目:我有一个名为“Api”的WebApi项目,它引用了一个名为“Models”的类库。我在我的网络配置中设置全球化信息,如下所示:

<globalization uiCulture="en"/>

我的“模型”项目中有一些资源(.resx)文件,我的问题是我获得了翻译字符串的西班牙语版本。如果我在“Api”项目中调试并在此行中设置断点:

var a = CultureInfo.CurrentCulture;

我得到的值是“en-GB”,但如果我在“Models”项目中设置了类似的行和断点,我会得到“es-Es”。 我做错了什么?我怎样才能解决这个问题?理想情况下,我会在我的Web配置中保留语言配置(因为我有多个环境的转换)。非常感谢你

编辑:我有另一个类似于“模型”的类库,名为“服务”,我也参考了“Api。我在那里查看了Cul​​tureInfo.CurrentCulture以及CultureInfo.CurrentUICulture等于”en-GB“所以我是猜测它可能与项目配置有关吗?

1 个答案:

答案 0 :(得分:1)

我看到&#34;模特&#34;代码在不同的线程中执行,因此我从web配置中删除了全球化信息,并将其替换为

<add key="LanguageCode" value="es" />

Ant然后在我的&#34; Api&#34;的Startup.Cs上我写的项目:

 CultureInfo culture = CultureInfo.CreateSpecificCulture(WebConfigurationManager.AppSettings["LanguageCode"]);
        CultureInfo.DefaultThreadCurrentCulture = culture;
        CultureInfo.DefaultThreadCurrentUICulture = culture;

这似乎工作正常。