在我的ASP.NET WebAPI控制器中,我有以下代码:
var cultures = [Get culture strings from DB]
var model = cultures.Select(culture => new MyModel
{
Name = CultureInfo.CreateSpecificCulture(culture).NativeName,
IsCurrent = CultureInfo.CreateSpecificCulture(culture).Equals(CultureInfo.CurrentCulture)
})
return Ok(model);
我还有一个过滤器,使用Thread.CurrentThread.CurrentCulture = culture;
在我的代码中,我最近切换到属性路由(尽管可能不是原因),现在我看到一个奇怪的行为:CultureInfo.CurrentCulture
对于select查询是错误的。如果我查看调试器,则设置正确的文化,如果我扩展IEnumerable,它将获得正确的文化,但是当我在浏览器中查看结果时,将使用服务器文化。我认为这是因为选择的查询被定义,并且CultureInfo.CurrentCulture
被重置。如果我在模型上ToList()
,那就是正确的。
我在语言过滤器中做错了什么或者我是否必须确保不从控制器返回选择?