如何为ASP.NET 5应用程序设置区域设置?

时间:2015-03-11 08:46:35

标签: c# asp.net locale asp.net-core

我正在尝试对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?)有没有更好的方法来实现这一目标?

2 个答案:

答案 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日,星期二
本地化将在beta6See de the roadmap

更新 2015年12月27日

现在可以进行本地化,我们在aspnet/Localization

中提供了样本