我正在尝试对ASP.NET 5 Web应用程序的主机区域设置进行全面覆盖。大多数解决方案都引用<globalization/>
web.config元素,但这是特定于IIS的,并且似乎不适合新的ASP.NET模型。
我试过了:
app.Use(next => context => {
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-AU");
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en-AU");
return next(context);
});
这会被执行,但这似乎对请求没有任何影响(可能是由于管道中广泛的Task
?)有没有更好的方法来实现这一目标?
答案 0 :(得分:6)
问题在于异步控制器。您应该将默认文化设置为所有线程:
app.Use(next => context => {
CultureInfo.DefaultThreadCurrentCulture = CultureInfo.GetCultureInfo("en-AU");
CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.GetCultureInfo("en-AU");
return next(context);
});
实际上,您可以将这些行放在Configure方法的顶部:
CultureInfo.DefaultThreadCurrentCulture = CultureInfo.GetCultureInfo("en-AU");
CultureInfo.DefaultThreadCurrentUICulture = CultureInfo.GetCultureInfo("en-AU");
答案 1 :(得分:5)
目标尚未为ASP.NET 5
做好准备,但您可以查看Damian Edwards's github
更新 2015年7月21日,星期二
本地化将在beta6
。 See de the roadmap
更新 2015年12月27日
现在可以进行本地化,我们在aspnet/Localization
中提供了样本